diff --git a/Source/Engine/Core/LogContext.cpp b/Source/Engine/Core/LogContext.cpp index 9df4bce99..6916fd7de 100644 --- a/Source/Engine/Core/LogContext.cpp +++ b/Source/Engine/Core/LogContext.cpp @@ -54,12 +54,17 @@ void LogContext::Print(LogType verbosity) StringBuilder msg; for (int32 index = (int32)stack.Count - 1; index >= 0; index--) { + LogContextData& context = stack.Ptr[index]; + + // Skip duplicates + if (index < stack.Count - 1 && stack.Ptr[stack.Count - 1] == context) + continue; + // Build call hierarchy via indentation msg.Clear(); for (uint32 i = index; i < stack.Count; i++) msg.Append(indentation); - LogContextData& context = stack.Ptr[index]; if (context.ObjectID != Guid::Empty) { // Object reference context diff --git a/Source/Engine/Core/LogContext.h b/Source/Engine/Core/LogContext.h index 7a851a6c9..59a0c537c 100644 --- a/Source/Engine/Core/LogContext.h +++ b/Source/Engine/Core/LogContext.h @@ -20,6 +20,11 @@ API_STRUCT(NoDefault) struct FLAXENGINE_API LogContextData /// A GUID for an object which this context applies to. /// API_FIELD() Guid ObjectID; + + friend bool operator==(const LogContextData& lhs, const LogContextData& rhs) + { + return lhs.ObjectID == rhs.ObjectID; + } }; template<>