23 #include "HAL/UnrealMemory.h"
25 #include "Kismet/GameplayStatics.h"
27 #include "Kismet/KismetSystemLibrary.h"
33 #if defined(_MSC_VER) && !defined(__clang__)
35 #define RCLUE_FUNC_LOG __FUNCSIG__
39 #define RCLUE_FUNC_LOG __PRETTY_FUNCTION__
47 #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
65 #define __LOG_INFO__ FString(__FILENAME__).Append(TEXT("@")).Append(FString::FromInt(__LINE__)).Append(TEXT(", ")).Append(RCLUE_FUNC_LOG)
83 #define UE_LOG_WITH_INFO(CategoryName, Verbosity, ...) \
87 UE_LOG(CategoryName, Verbosity, TEXT(
"[%s] %s"), *
__LOG_INFO__, *FString::Printf(__VA_ARGS__)); \
105 #define UE_LOG_WITH_INFO_SHORT(CategoryName, Verbosity, ...) \
109 FString UE_LOG_WITH_INFO_Temp1, UE_LOG_WITH_INFO_Temp2; \
111 FString(RCLUE_FUNC_LOG) \
115 TEXT(
"("), &UE_LOG_WITH_INFO_Temp1, &UE_LOG_WITH_INFO_Temp2, ESearchCase::CaseSensitive, ESearchDir::FromStart); \
117 UE_LOG_WITH_INFO_Temp1.Split( \
119 TEXT(
" "), &UE_LOG_WITH_INFO_Temp1, &UE_LOG_WITH_INFO_Temp2, ESearchCase::CaseSensitive, ESearchDir::FromEnd); \
121 UE_LOG(CategoryName, Verbosity, TEXT(
"[%s@%d] %s"), *UE_LOG_WITH_INFO_Temp2, __LINE__, *FString::Printf(__VA_ARGS__)); \
139 #define UE_LOG_WITH_INFO_NAMED(CategoryName, Verbosity, ...) \
143 UE_LOG_WITH_INFO(CategoryName, Verbosity, TEXT(
"[%s] %s"), *GetName(), *FString::Printf(__VA_ARGS__)); \
161 #define UE_LOG_WITH_INFO_SHORT_NAMED(CategoryName, Verbosity, ...) \
165 UE_LOG_WITH_INFO_SHORT(CategoryName, Verbosity, TEXT(
"[%s] %s"), *GetName(), *FString::Printf(__VA_ARGS__)); \
181 #define UE_LOG_THROTTLE(InRate, InLastHit, ...) \
185 float UE_LOG_THROTTLE_Now = UGameplayStatics::GetTimeSeconds(GetWorld()); \
187 if (InLastHit + InRate <= UE_LOG_THROTTLE_Now) \
191 InLastHit = UE_LOG_THROTTLE_Now; \
193 UE_LOG(__VA_ARGS__); \
211 #define UE_LOG_WITH_INFO_THROTTLE(InRate, InLastHit, ...) \
215 float UE_LOG_WITH_INFO_THROTTLE_Now = UGameplayStatics::GetTimeSeconds(GetWorld()); \
217 if (InLastHit + InRate <= UE_LOG_WITH_INFO_THROTTLE_Now) \
221 InLastHit = UE_LOG_WITH_INFO_THROTTLE_Now; \
223 UE_LOG_WITH_INFO(__VA_ARGS__); \
241 #define UE_LOG_WITH_INFO_SHORT_THROTTLE(InRate, InLastHit, ...) \
245 float UE_LOG_WITH_INFO_THROTTLE_Now = UGameplayStatics::GetTimeSeconds(GetWorld()); \
247 if (InLastHit + InRate <= UE_LOG_WITH_INFO_THROTTLE_Now) \
251 InLastHit = UE_LOG_WITH_INFO_THROTTLE_Now; \
253 UE_LOG_WITH_INFO_SHORT(__VA_ARGS__); \
271 #define UE_LOG_WITH_INFO_NAMED_THROTTLE(InRate, InLastHit, ...) \
275 float UE_LOG_WITH_INFO_NAMED_THROTTLE_Now = UGameplayStatics::GetTimeSeconds(GetWorld()); \
277 if (InLastHit + InRate <= UE_LOG_WITH_INFO_NAMED_THROTTLE_Now) \
281 InLastHit = UE_LOG_WITH_INFO_NAMED_THROTTLE_Now; \
283 UE_LOG_WITH_INFO_NAMED(__VA_ARGS__); \
301 #define UE_LOG_WITH_INFO_SHORT_NAMED_THROTTLE(InRate, InLastHit, ...) \
305 float UE_LOG_WITH_INFO_NAMED_THROTTLE_Now = UGameplayStatics::GetTimeSeconds(GetWorld()); \
307 if (InLastHit + InRate <= UE_LOG_WITH_INFO_NAMED_THROTTLE_Now) \
311 InLastHit = UE_LOG_WITH_INFO_NAMED_THROTTLE_Now; \
313 UE_LOG_WITH_INFO_SHORT_NAMED(__VA_ARGS__); \