Files
UnrealEngine/Engine/Source/Runtime/Experimental/Chaos/Private/ChaosVisualDebugger/ChaosVDContextProvider.cpp
2025-05-18 13:04:45 +08:00

59 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "ChaosVisualDebugger/ChaosVDContextProvider.h"
#include "ChaosVisualDebugger/ChaosVisualDebuggerTrace.h"
#if WITH_CHAOS_VISUAL_DEBUGGER
UE_DEFINE_THREAD_SINGLETON_TLS(FChaosVDThreadContext)
bool FChaosVDThreadContext::GetCurrentContext(FChaosVDContext& OutContext)
{
if (LocalContextStack.Num() > 0)
{
OutContext = LocalContextStack.Top();
return true;
}
return false;
}
const FChaosVDContext* FChaosVDThreadContext::GetCurrentContext(EChaosVDContextType Type)
{
if (LocalContextStack.Num() > 0)
{
const FChaosVDContext* Context = &LocalContextStack.Top();
return Context && Context->Type == static_cast<int32>(Type) ? Context : nullptr;
}
else
{
return nullptr;
}
}
const FChaosVDContext* FChaosVDThreadContext::GetCurrentContext()
{
return LocalContextStack.Num() > 0 ? &LocalContextStack.Top() : nullptr;
}
void FChaosVDThreadContext::PushContext(const FChaosVDContext& InContext)
{
if (!FChaosVisualDebuggerTrace::IsTracing())
{
return;
}
LocalContextStack.Add(InContext);
}
void FChaosVDThreadContext::PopContext()
{
if (LocalContextStack.Num() > 0)
{
LocalContextStack.Pop();
}
}
#endif //WITH_CHAOS_VISUAL_DEBUGGER