2023-03-14 13:35:46 -04:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
2024-05-02 11:47:26 -04:00
|
|
|
#if WITH_STATETREE_TRACE
|
2023-03-14 13:35:46 -04:00
|
|
|
|
|
|
|
|
#include "Trace/Trace.h"
|
2023-12-13 10:21:13 -05:00
|
|
|
#include "Containers/ContainersFwd.h"
|
2023-03-14 13:35:46 -04:00
|
|
|
|
2023-12-13 10:21:13 -05:00
|
|
|
struct FStateTreeExecutionFrame;
|
2023-03-14 13:35:46 -04:00
|
|
|
class UStateTree;
|
2023-04-19 13:26:23 -04:00
|
|
|
struct FStateTreeDataView;
|
2023-03-14 13:35:46 -04:00
|
|
|
struct FStateTreeActiveStates;
|
|
|
|
|
struct FStateTreeInstanceDebugId;
|
2023-05-10 15:14:21 -04:00
|
|
|
struct FStateTreeIndex16;
|
|
|
|
|
struct FStateTreeStateHandle;
|
2023-08-04 14:55:23 -04:00
|
|
|
struct FStateTreeTransitionSource;
|
2023-05-23 10:46:16 -04:00
|
|
|
enum class EStateTreeStateSelectionBehavior : uint8;
|
2023-04-19 13:26:23 -04:00
|
|
|
enum class EStateTreeRunStatus : uint8;
|
2023-05-29 10:13:21 -04:00
|
|
|
enum class EStateTreeTraceEventType : uint8;
|
|
|
|
|
enum class EStateTreeUpdatePhase : uint8;
|
2024-04-22 11:34:53 -04:00
|
|
|
namespace ELogVerbosity { enum Type : uint8; }
|
2023-03-14 13:35:46 -04:00
|
|
|
|
|
|
|
|
UE_TRACE_CHANNEL_EXTERN(StateTreeDebugChannel, STATETREEMODULE_API)
|
|
|
|
|
|
2023-03-15 11:59:44 -04:00
|
|
|
namespace UE::StateTreeTrace
|
2023-03-14 13:35:46 -04:00
|
|
|
{
|
2023-05-26 11:59:58 -04:00
|
|
|
void RegisterGlobalDelegates();
|
|
|
|
|
void UnregisterGlobalDelegates();
|
2023-12-13 10:21:13 -05:00
|
|
|
FStateTreeIndex16 FindOrAddDebugIdForAsset(const UStateTree* StateTree);
|
|
|
|
|
void OutputPhaseScopeEvent(FStateTreeInstanceDebugId InstanceId, EStateTreeUpdatePhase Phase, EStateTreeTraceEventType EventType, FStateTreeStateHandle StateHandle);
|
|
|
|
|
void OutputAssetDebugIdEvent(const UStateTree* StateTree, FStateTreeIndex16 AssetDebugId);
|
2023-05-29 10:13:21 -04:00
|
|
|
void OutputInstanceLifetimeEvent(FStateTreeInstanceDebugId InstanceId, const UStateTree* StateTree, const TCHAR* InstanceName, EStateTreeTraceEventType EventType);
|
2023-12-13 10:21:13 -05:00
|
|
|
void OutputInstanceFrameEvent(FStateTreeInstanceDebugId InstanceId, const FStateTreeExecutionFrame* Frame);
|
2024-04-22 11:34:53 -04:00
|
|
|
void OutputLogEventTrace(FStateTreeInstanceDebugId InstanceId, ELogVerbosity::Type Verbosity, const TCHAR* Fmt, ...);
|
2023-12-13 10:21:13 -05:00
|
|
|
void OutputStateEventTrace(FStateTreeInstanceDebugId InstanceId, FStateTreeStateHandle StateHandle, EStateTreeTraceEventType EventType);
|
2023-05-29 10:13:21 -04:00
|
|
|
void OutputTaskEventTrace(FStateTreeInstanceDebugId InstanceId, FStateTreeIndex16 TaskIdx, FStateTreeDataView DataView, EStateTreeTraceEventType EventType, EStateTreeRunStatus Status);
|
2023-08-07 18:06:40 -04:00
|
|
|
void OutputEvaluatorEventTrace(FStateTreeInstanceDebugId InstanceId, FStateTreeIndex16 EvaluatorIdx, FStateTreeDataView DataView, EStateTreeTraceEventType EventType);
|
2023-05-29 10:13:21 -04:00
|
|
|
void OutputConditionEventTrace(FStateTreeInstanceDebugId InstanceId, FStateTreeIndex16 ConditionIdx, FStateTreeDataView DataView, EStateTreeTraceEventType EventType);
|
2023-08-04 14:55:23 -04:00
|
|
|
void OutputTransitionEventTrace(FStateTreeInstanceDebugId InstanceId, FStateTreeTransitionSource TransitionSource, EStateTreeTraceEventType EventType);
|
2023-12-13 10:21:13 -05:00
|
|
|
void OutputActiveStatesEventTrace(FStateTreeInstanceDebugId InstanceId, TConstArrayView<FStateTreeExecutionFrame> ActiveFrames);
|
2023-04-19 13:26:23 -04:00
|
|
|
}
|
2023-03-14 13:35:46 -04:00
|
|
|
|
|
|
|
|
#define TRACE_STATETREE_INSTANCE_EVENT(InstanceID, StateTree, InstanceName, EventType) \
|
2023-06-09 13:20:39 -04:00
|
|
|
UE::StateTreeTrace::OutputInstanceLifetimeEvent(InstanceID, StateTree, InstanceName, EventType);
|
2023-03-14 13:35:46 -04:00
|
|
|
|
2023-12-13 10:21:13 -05:00
|
|
|
#define TRACE_STATETREE_INSTANCE_FRAME_EVENT(InstanceID, Frame) \
|
|
|
|
|
UE::StateTreeTrace::OutputInstanceFrameEvent(InstanceID, Frame);
|
|
|
|
|
|
2023-08-04 14:55:23 -04:00
|
|
|
#define TRACE_STATETREE_PHASE_EVENT(InstanceID, Phase, EventType, StateHandle) \
|
2023-12-13 10:21:13 -05:00
|
|
|
UE::StateTreeTrace::OutputPhaseScopeEvent(InstanceID, Phase, EventType, StateHandle); \
|
2023-05-29 10:13:21 -04:00
|
|
|
|
2024-04-22 11:34:53 -04:00
|
|
|
#define TRACE_STATETREE_LOG_EVENT(InstanceId, TraceVerbosity, Format, ...) \
|
2023-03-14 13:35:46 -04:00
|
|
|
if (UE_TRACE_CHANNELEXPR_IS_ENABLED(StateTreeDebugChannel)) \
|
|
|
|
|
{ \
|
2024-04-22 11:34:53 -04:00
|
|
|
UE::StateTreeTrace::OutputLogEventTrace(InstanceId, ELogVerbosity::TraceVerbosity, Format, ##__VA_ARGS__); \
|
2023-03-14 13:35:46 -04:00
|
|
|
}
|
|
|
|
|
|
2023-12-13 10:21:13 -05:00
|
|
|
#define TRACE_STATETREE_STATE_EVENT(InstanceId, StateHandle, EventType) \
|
2023-03-14 13:35:46 -04:00
|
|
|
if (UE_TRACE_CHANNELEXPR_IS_ENABLED(StateTreeDebugChannel)) \
|
|
|
|
|
{ \
|
2023-12-13 10:21:13 -05:00
|
|
|
UE::StateTreeTrace::OutputStateEventTrace(InstanceId, StateHandle, EventType); \
|
2023-03-14 13:35:46 -04:00
|
|
|
}
|
|
|
|
|
|
2023-05-29 10:13:21 -04:00
|
|
|
#define TRACE_STATETREE_TASK_EVENT(InstanceId, TaskIdx, DataView, EventType, Status) \
|
2023-03-14 13:35:46 -04:00
|
|
|
if (UE_TRACE_CHANNELEXPR_IS_ENABLED(StateTreeDebugChannel)) \
|
|
|
|
|
{ \
|
2023-05-29 10:13:21 -04:00
|
|
|
UE::StateTreeTrace::OutputTaskEventTrace(InstanceId, TaskIdx, DataView, EventType, Status); \
|
2023-04-19 13:26:23 -04:00
|
|
|
}
|
|
|
|
|
|
2023-08-07 18:06:40 -04:00
|
|
|
#define TRACE_STATETREE_EVALUATOR_EVENT(InstanceId, EvaluatorIdx, DataView, EventType) \
|
|
|
|
|
if (UE_TRACE_CHANNELEXPR_IS_ENABLED(StateTreeDebugChannel)) \
|
|
|
|
|
{ \
|
|
|
|
|
UE::StateTreeTrace::OutputEvaluatorEventTrace(InstanceId, EvaluatorIdx, DataView, EventType); \
|
|
|
|
|
}
|
|
|
|
|
|
2023-05-29 10:13:21 -04:00
|
|
|
#define TRACE_STATETREE_CONDITION_EVENT(InstanceId, ConditionIdx, DataView, EventType) \
|
2023-04-19 13:26:23 -04:00
|
|
|
if (UE_TRACE_CHANNELEXPR_IS_ENABLED(StateTreeDebugChannel)) \
|
|
|
|
|
{ \
|
2023-05-29 10:13:21 -04:00
|
|
|
UE::StateTreeTrace::OutputConditionEventTrace(InstanceId, ConditionIdx, DataView, EventType); \
|
2023-03-14 13:35:46 -04:00
|
|
|
}
|
|
|
|
|
|
2023-05-29 10:13:21 -04:00
|
|
|
#define TRACE_STATETREE_TRANSITION_EVENT(InstanceId, TransitionIdx, EventType) \
|
2023-03-14 13:35:46 -04:00
|
|
|
if (UE_TRACE_CHANNELEXPR_IS_ENABLED(StateTreeDebugChannel)) \
|
|
|
|
|
{ \
|
2023-05-29 10:13:21 -04:00
|
|
|
UE::StateTreeTrace::OutputTransitionEventTrace(InstanceId, TransitionIdx, EventType); \
|
2023-05-23 10:46:16 -04:00
|
|
|
}
|
|
|
|
|
|
2023-12-13 10:21:13 -05:00
|
|
|
#define TRACE_STATETREE_ACTIVE_STATES_EVENT(InstanceId, ActivateFrames) \
|
|
|
|
|
UE::StateTreeTrace::OutputActiveStatesEventTrace(InstanceId, ActivateFrames);
|
2023-03-14 13:35:46 -04:00
|
|
|
|
2024-05-02 11:47:26 -04:00
|
|
|
#else //WITH_STATETREE_TRACE
|
2023-03-14 13:35:46 -04:00
|
|
|
|
|
|
|
|
#define TRACE_STATETREE_INSTANCE_EVENT(InstanceID, StateTree, InstanceName, EventType)
|
2023-12-13 10:21:13 -05:00
|
|
|
#define TRACE_STATETREE_INSTANCE_FRAME_EVENT(InstanceID, Frame)
|
2023-08-04 14:55:23 -04:00
|
|
|
#define TRACE_STATETREE_PHASE_EVENT(InstanceID, Phase, EventType, StateHandle)
|
2024-04-22 11:34:53 -04:00
|
|
|
#define TRACE_STATETREE_LOG_EVENT(InstanceId, TraceVerbosity, Format, ...)
|
2023-12-13 10:21:13 -05:00
|
|
|
#define TRACE_STATETREE_STATE_EVENT(InstanceId, StateHandle, EventType)
|
2023-05-29 10:13:21 -04:00
|
|
|
#define TRACE_STATETREE_TASK_EVENT(InstanceId, TaskIdx, DataView, EventType, Status)
|
2023-08-07 18:06:40 -04:00
|
|
|
#define TRACE_STATETREE_EVALUATOR_EVENT(InstanceId, EvaluatorIdx, DataView, EventType)
|
2023-05-29 10:13:21 -04:00
|
|
|
#define TRACE_STATETREE_CONDITION_EVENT(InstanceId, ConditionIdx, DataView, EventType)
|
|
|
|
|
#define TRACE_STATETREE_TRANSITION_EVENT(InstanceId, TransitionIdx, EventType)
|
2023-12-13 10:21:13 -05:00
|
|
|
#define TRACE_STATETREE_ACTIVE_STATES_EVENT(InstanceId, ActiveFrames)
|
2023-03-14 13:35:46 -04:00
|
|
|
|
2024-05-02 11:47:26 -04:00
|
|
|
#endif // WITH_STATETREE_TRACE
|