Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
CK_UE.h
이 파일의 문서화 페이지로 가기
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6
7// 로그 카테고리 선언
8DECLARE_LOG_CATEGORY_EXTERN(LogCK, Log, All); // 메인 로그
9DECLARE_LOG_CATEGORY_EXTERN(LogCKCharacter, Log, All);
10DECLARE_LOG_CATEGORY_EXTERN(LogCKController, Log, All);
12DECLARE_LOG_CATEGORY_EXTERN(LogCKAbility, Log, All);
13DECLARE_LOG_CATEGORY_EXTERN(LogCKAttribute, Log, All);
16
17#ifndef UNUSE
18 #define UNUSE
19#endif
20
21// 현재 실행 중인 함수 이름과 라인 번호를 문자열로 가져옴
22#define LOG_CALL_INFO (FString(__FUNCTION__) + TEXT(": ") + FString::FromInt(__LINE__))
23
24// 현재 클래스 이름만 추출 (UFoo::Bar → UFoo)
25#define LOG_CLASS (FString(__FUNCTION__).Left(FString(__FUNCTION__).Find(TEXT("::"))))
26
27// 타입을 문자열로 변환 (타입 존재 여부 컴파일 타임 체크 포함)
28// 사용법: NAMEOF(ULevelStreamingData) → L"ULevelStreamingData"
29// sizeof를 붙이면 Type이 정상적인 타입이 아닐 경우, 컴파일 타임에 오류를 만듦.
30#define NAMEOF(Type) ([]{ (void)sizeof(Type); return TEXT(#Type); }())
31
32// 변수 또는 표현식을 문자열로 변환 (심볼 존재 여부 컴파일 타임 체크 포함)
33// 사용법: NAMEOF_VAR(CurrentHealth) → L"CurrentHealth"
34#define NAMEOF_VAR(Expr) ((void)sizeof(Expr), TEXT(#Expr))
35
36// ------------------- 콘솔 로그 (Output Log) ------------------- //
37// 사용법: LOG_INFO(LogCK, "메시지: %d", 10);
38#define LOG_INFO(Category, Format, ...) UE_LOG(Category, Log, TEXT("[%s]: %s"), *LOG_CALL_INFO, *FString::Printf(TEXT(Format), ##__VA_ARGS__))
39#define LOG_WARNING(Category, Format, ...) UE_LOG(Category, Warning, TEXT("[%s]: %s"), *LOG_CALL_INFO, *FString::Printf(TEXT(Format), ##__VA_ARGS__))
40#define LOG_ERROR(Category, Format, ...) UE_LOG(Category, Error, TEXT("[%s]: %s"), *LOG_CALL_INFO, *FString::Printf(TEXT(Format), ##__VA_ARGS__))
41
42// 사용법: LOG_CLASS_INFO(LogCKLevel, "메시지: %d", 10); → "UFoo: 메시지: 10"
43#define LOG_CLASS_INFO(Category, Format, ...) UE_LOG(Category, Log, TEXT("%s: ") TEXT(Format), *LOG_CLASS, ##__VA_ARGS__)
44#define LOG_CLASS_WARNING(Category, Format, ...) UE_LOG(Category, Warning, TEXT("%s: ") TEXT(Format), *LOG_CLASS, ##__VA_ARGS__)
45#define LOG_CLASS_ERROR(Category, Format, ...) UE_LOG(Category, Error, TEXT("%s: ") TEXT(Format), *LOG_CLASS, ##__VA_ARGS__)
46
47// ------------------- 스크린 로그 (View Port) ------------------- //
48// 사용법: LOG_SCREEN("체력: %f", Health);
49#define LOG_SCREEN_C(Color, Format, ...) do { if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 5.f, Color, FString::Printf(TEXT(Format), ##__VA_ARGS__)); } while(0)
50#define LOG_SCREEN(Format, ...) do { if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT(Format), ##__VA_ARGS__)); } while(0)
51#define LOG_SCREEN_ERROR(Format, ...) do { if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT(Format), ##__VA_ARGS__)); } while(0)
52#define LOG_SCREEN_WARNING(Format, ...) do { if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Yellow, FString::Printf(TEXT(Format), ##__VA_ARGS__)); } while(0)
DECLARE_LOG_CATEGORY_EXTERN(LogCK, Log, All)