UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ObjectTrace.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
8#include "Trace/Config.h"
9#include "TraceFilter.h"
10
11#include "ObjectTrace.generated.h"
12
14UCLASS()
16{
18
20 : FrameIndex(0), RecordingIndex(0), ElapsedTime(0.0)
21 {}
22
23#if !OBJECT_TRACE_ENABLED
24 virtual bool ShouldCreateSubsystem(UObject* Outer) const override
25 {
26 return false;
27 }
28#endif
29
30public:
37};
38
39#if OBJECT_TRACE_ENABLED
40
41class UClass;
42class UObject;
43class UWorld;
44class FSceneView;
45
46struct FObjectTrace
47{
48 static constexpr uint64 InvalidObjectId = 0;
49
51 ENGINE_API static void Init();
52
54 ENGINE_API static void Destroy();
55
57 ENGINE_API static void Reset();
58
60 ENGINE_API static void OutputType(const UStruct* InType);
61
63 UE_DEPRECATED(5.7, "OutputClass is now deprecated, use OutputType")
64 static void OutputClass(const UClass* InClass)
65 {
66 OutputType(InClass);
67 };
68
70 ENGINE_API static void OutputObject(const UObject* InObject);
71
73 ENGINE_API static void OutputInstance(const UObject* InOuterObject, uint64 InInstanceId, uint64 InOuterId, UStruct* InType, const FString& InName, const FString& InPathName = FString());
74
77
79 ENGINE_API static void OutputObjectLifetimeBegin(const UObject* InObject);
80
83
85 ENGINE_API static void OutputObjectLifetimeEnd(const UObject* InObject);
86
88 ENGINE_API static void OutputView(const UObject* InPlayer, const FSceneView* InView);
89
91 ENGINE_API static void OutputObjectEvent(const UObject* InObject, const TCHAR* InEvent);
92
95
98
100 ENGINE_API static uint64 GetObjectId(const UObject* InObject);
101
104
106 ENGINE_API static uint16 GetObjectWorldTickCounter(const UObject* InObject);
107
110
112 ENGINE_API static double GetWorldElapsedTime(const UWorld* InWorld);
113
115 ENGINE_API static double GetObjectWorldElapsedTime(const UObject* InObject);
116
119
122
125
127 ENGINE_API static void OutputWorld(const UWorld* InWorld);
128};
129
130#define TRACE_TYPE(Type) \
131 FObjectTrace::OutputType(Type);
132
133#define TRACE_CLASS(Class) \
134 FObjectTrace::OutputType(Class);
135
136#define TRACE_OBJECT(Object) \
137 FObjectTrace::OutputObject(Object);
138
139#define TRACE_INSTANCE(OuterObject, InstanceId, OuterId, Type, Name) \
140 FObjectTrace::OutputInstance(OuterObject, InstanceId, OuterId, Type, Name);
141
142#define TRACE_VIEW(Player, View) \
143 FObjectTrace::OutputView(Player, View);
144
145#if TRACE_FILTERING_ENABLED
146
147#define TRACE_OBJECT_EVENT(Object, Event) \
148 if (CAN_TRACE_OBJECT(Object)) { UNCONDITIONAL_TRACE_OBJECT_EVENT(Object, Event); }
149
150#define TRACE_OBJECT_TRANSFORM(Object, Transform, Teleport) \
151 if (CAN_TRACE_OBJECT(Object)) { FObjectTrace::OutputObjectTransform(Object, Transform, Teleport); }
152
153#define TRACE_OBJECT_LIFETIME_BEGIN(Object) \
154 if (CAN_TRACE_OBJECT(Object)) { FObjectTrace::OutputObjectLifetimeBegin(Object); }
155
156#define TRACE_OBJECT_LIFETIME_END(Object) \
157 if (CAN_TRACE_OBJECT(Object)) { FObjectTrace::OutputObjectLifetimeEnd(Object); }
158
159#define TRACE_INSTANCE_LIFETIME_END(OuterObject, InstanceId) \
160 if (CAN_TRACE_OBJECT(OuterObject)) { FObjectTrace::OutputInstanceLifetimeEnd(OuterObject, InstanceId); }
161
162#define TRACE_PAWN_POSSESS(Controller, Pawn)\
163 if (CAN_TRACE_OBJECT(Controller) && (Pawn==nullptr || (CAN_TRACE_OBJECT(Pawn)))) { FObjectTrace::OutputPawnPossess(Controller, Pawn); }
164
165#else
166
167#define TRACE_OBJECT_EVENT(Object, Event) \
168 UNCONDITIONAL_TRACE_OBJECT_EVENT(Object, Event);
169
170#define TRACE_OBJECT_TRANSFORM(Object, Transform, Teleport) \
171 FObjectTrace::OutputObjectTransform(Object, Transform, Teleport);
172
173#define TRACE_OBJECT_LIFETIME_BEGIN(Object) \
174 FObjectTrace::OutputObjectLifetimeBegin(Object);
175
176#define TRACE_OBJECT_LIFETIME_END(Object) \
177 FObjectTrace::OutputObjectLifetimeEnd(Object);
178
179#define TRACE_PAWN_POSSESS(Controller, Pawn)\
180 FObjectTrace::OutputPawnPossess(Controller, Pawn);
181
182#endif
183
184#define UNCONDITIONAL_TRACE_OBJECT_EVENT(Object, Event) \
185 FObjectTrace::OutputObjectEvent(Object, TEXT(#Event));
186
187#define TRACE_WORLD(World) \
188 FObjectTrace::OutputWorld(World);
189
190
191#else
192
194{
196 static UObject* GetObjectFromId(uint64 id) { return nullptr; }
197};
198
199#define TRACE_CLASS(...)
200#define TRACE_TYPE(...)
201#define TRACE_OBJECT(...)
202#define TRACE_INSTANCE(...)
203#define TRACE_OBJECT_TRANSFORM(...)
204#define TRACE_OBJECT_EVENT(...)
205#define TRACE_WORLD(...)
206#define TRACE_PAWN_POSSESS(...)
207#define TRACE_VIEW(...)
208#define TRACE_OBJECT_LIFETIME_BEGIN(...)
209#define TRACE_OBJECT_LIFETIME_END(...)
210#define TRACE_INSTANCE_LIFETIME_END(...)
211#define TRACE_CHILD_ELEMENT(...)
212#define TRACE_CHILD_ELEMENT_WITH_OUTER(...)
213#define TRACE_CHILD_ELEMENT_LIFETIME_BEGIN(...)
214#define TRACE_CHILD_ELEMENT_WITH_OUTER_LIFETIME_BEGIN(...)
215#define TRACE_CHILD_ELEMENT_LIFETIME_END(...)
216#define TRACE_CHILD_ELEMENT_EVENT(...)
217
218#endif
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ETeleportType
Definition EngineTypes.h:2401
void Init()
Definition LockFreeList.h:4
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
uint16_t uint16
Definition binka_ue_file_header.h:7
Definition SceneView.h:1425
Definition Class.h:3793
Definition ObjectTrace.h:16
double ElapsedTime
Definition ObjectTrace.h:36
uint16 RecordingIndex
Definition ObjectTrace.h:34
uint16 FrameIndex
Definition ObjectTrace.h:32
Definition Object.h:95
Definition Class.h:480
Definition WorldSubsystem.h:16
Definition World.h:918
U16 Index
Definition radfft.cpp:71
Definition ObjectTrace.h:194
static UObject * GetObjectFromId(uint64 id)
Definition ObjectTrace.h:196