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);
11DECLARE_LOG_CATEGORY_EXTERN(LogCKPlayer, Log, All);
12DECLARE_LOG_CATEGORY_EXTERN(LogCKAbility, Log, All);
13DECLARE_LOG_CATEGORY_EXTERN(LogCKAttribute, Log, All);
14DECLARE_LOG_CATEGORY_EXTERN(LogCKLevel, Log, All);
15DECLARE_LOG_CATEGORY_EXTERN(LogCKAsset, Log, All);
16
17// 현재 실행 중인 함수 이름과 라인 번호를 문자열로 가져옴
18#define LOG_CALL_INFO (FString(__FUNCTION__) + TEXT(": ") + FString::FromInt(__LINE__))
19
20// 현재 클래스 이름만 추출 (UFoo::Bar → UFoo)
21#define LOG_CLASS (FString(__FUNCTION__).Left(FString(__FUNCTION__).Find(TEXT("::"))))
22
23// 타입을 문자열로 변환 (타입 존재 여부 컴파일 타임 체크 포함)
24// 사용법: NAMEOF(ULevelStreamingData) → L"ULevelStreamingData"
25// sizeof를 붙이면 Type이 정상적인 타입이 아닐 경우, 컴파일 타임에 오류를 만듦.
26#define NAMEOF(Type) ([]{ (void)sizeof(Type); return TEXT(#Type); }())
27
28// ------------------- 콘솔 로그 (Output Log) ------------------- //
29// 사용법: LOG_INFO(LogCK, "메시지: %d", 10);
30#define LOG_INFO(Category, Format, ...) UE_LOG(Category, Log, TEXT("%s: %s"), *LOG_CALL_INFO, *FString::Printf(TEXT(Format), ##__VA_ARGS__))
31#define LOG_WARNING(Category, Format, ...) UE_LOG(Category, Warning, TEXT("%s: %s"), *LOG_CALL_INFO, *FString::Printf(TEXT(Format), ##__VA_ARGS__))
32#define LOG_ERROR(Category, Format, ...) UE_LOG(Category, Error, TEXT("%s: %s"), *LOG_CALL_INFO, *FString::Printf(TEXT(Format), ##__VA_ARGS__))
33
34// 사용법: LOG_CLASS_INFO(LogCKLevel, "메시지: %d", 10); → "UFoo: 메시지: 10"
35#define LOG_CLASS_INFO(Category, Format, ...) UE_LOG(Category, Log, TEXT("%s: ") TEXT(Format), *LOG_CLASS, ##__VA_ARGS__)
36#define LOG_CLASS_WARNING(Category, Format, ...) UE_LOG(Category, Warning, TEXT("%s: ") TEXT(Format), *LOG_CLASS, ##__VA_ARGS__)
37#define LOG_CLASS_ERROR(Category, Format, ...) UE_LOG(Category, Error, TEXT("%s: ") TEXT(Format), *LOG_CLASS, ##__VA_ARGS__)
38
39// ------------------- 스크린 로그 (View Port) ------------------- //
40// 사용법: LOG_SCREEN("체력: %f", Health);
41#define LOG_SCREEN(Format, ...) do { if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT(Format), ##__VA_ARGS__)); } while(0)
42#define LOG_SCREEN_ERROR(Format, ...) do { if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT(Format), ##__VA_ARGS__)); } while(0)
43#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)