UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ChaosVDTraceMacros.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#if WITH_CHAOS_VISUAL_DEBUGGER
6
7 #ifndef CVD_DEFINE_TRACE_VECTOR
8 #define CVD_DEFINE_TRACE_VECTOR(Type, Name) \
9 UE_TRACE_MINIMAL_EVENT_FIELD(Type, Name##X) \
10 UE_TRACE_MINIMAL_EVENT_FIELD(Type, Name##Y) \
11 UE_TRACE_MINIMAL_EVENT_FIELD(Type, Name##Z)
12 #endif
13
14 #ifndef CVD_DEFINE_TRACE_ROTATOR
15 #define CVD_DEFINE_TRACE_ROTATOR(Type, Name) \
16 UE_TRACE_MINIMAL_EVENT_FIELD(Type, Name##X) \
17 UE_TRACE_MINIMAL_EVENT_FIELD(Type, Name##Y) \
18 UE_TRACE_MINIMAL_EVENT_FIELD(Type, Name##Z) \
19 UE_TRACE_MINIMAL_EVENT_FIELD(Type, Name##W)
20 #endif
21
22 #ifndef CVD_TRACE_VECTOR_ON_EVENT
23 #define CVD_TRACE_VECTOR_ON_EVENT(EventName, Name, Vector) \
24 EventName.Name##X(Vector.X) \
25 << EventName.Name##Y(Vector.Y) \
26 << EventName.Name##Z(Vector.Z)
27 #endif
28
29 #ifndef CVD_TRACE_ROTATOR_ON_EVENT
30 #define CVD_TRACE_ROTATOR_ON_EVENT(EventName, Name, Rotator) \
31 EventName.Name##X(Rotator.X) \
32 << EventName.Name##Y(Rotator.Y) \
33 << EventName.Name##Z(Rotator.Z) \
34 << EventName.Name##W(Rotator.W)
35 #endif
36
37 #ifndef CVD_TRACE_PARTICLE
38 #define CVD_TRACE_PARTICLE(ParticleHandle) \
39 FChaosVisualDebuggerTrace::TraceParticle(ParticleHandle);
40 #endif
41
42 #ifndef CVD_TRACE_PARTICLES
43 #define CVD_TRACE_PARTICLES(ParticleHandles) \
44 FChaosVisualDebuggerTrace::TraceParticles(ParticleHandles);
45 #endif
46
47 #ifndef CVD_TRACE_PARTICLES_VIEW
48 #define CVD_TRACE_PARTICLES_VIEW(ParticleHandlesView) \
49 FChaosVisualDebuggerTrace::TraceParticlesView(ParticleHandlesView);
50 #endif
51
52 #ifndef CVD_TRACE_PARTICLES_SOA
53 #define CVD_TRACE_PARTICLES_SOA(ParticleSoA, ...) \
54 FChaosVisualDebuggerTrace::TraceParticlesSoA(ParticleSoA, ##__VA_ARGS__);
55 #endif
56
57 #ifndef CVD_TRACE_SOLVER_START_FRAME
58 #define CVD_TRACE_SOLVER_START_FRAME(SolverType, SolverRef) \
59 FChaosVDContext StartContextData; \
60 FChaosVisualDebuggerTrace::GetCVDContext<SolverType>(SolverRef, StartContextData); \
61 FChaosVisualDebuggerTrace::TraceSolverFrameStart(StartContextData, FChaosVisualDebuggerTrace::GetDebugName<SolverType>(SolverRef), SolverRef.GetCVDFrameNumber());
62 #endif
63
64 #ifndef CVD_TRACE_SOLVER_END_FRAME
65 #define CVD_TRACE_SOLVER_END_FRAME(SolverType, SolverRef) \
66 FChaosVDContext EndContextData; \
67 FChaosVisualDebuggerTrace::GetCVDContext<SolverType>(SolverRef, EndContextData); \
68 FChaosVisualDebuggerTrace::TraceSolverFrameEnd(EndContextData);
69 #endif
70
71 #ifndef CVD_SCOPE_TRACE_SOLVER_FRAME
72 #define CVD_SCOPE_TRACE_SOLVER_FRAME(SolverType, SolverRef) \
73 FChaosVDScopeSolverFrame<SolverType> ScopeSolverFrame(SolverRef);
74 #endif
75
76 #ifndef CVD_TRACE_SOLVER_STEP_START
77 #define CVD_TRACE_SOLVER_STEP_START(StepName) \
78 FChaosVisualDebuggerTrace::TraceSolverStepStart(StepName);
79 #endif
80
81 #ifndef CVD_TRACE_SOLVER_STEP_END
82 #define CVD_TRACE_SOLVER_STEP_END() \
83 FChaosVisualDebuggerTrace::TraceSolverStepEnd();
84 #endif
85
86 #ifndef CVD_SCOPE_TRACE_SOLVER_STEP
87 #define CVD_SCOPE_TRACE_SOLVER_STEP(DataChannel, StepName) \
88 CVD_SCOPED_DATA_CHANNEL_OVERRIDE(DataChannel) \
89 FChaosVDScopeSolverStep ScopeSolverStep(StepName)
90 #endif
91
92 #ifndef CVD_TRACE_BINARY_DATA
93 #define CVD_TRACE_BINARY_DATA(InData, TypeName, ...) \
94 FChaosVisualDebuggerTrace::TraceBinaryData(InData, TypeName, ##__VA_ARGS__);
95 #endif
96
97 #ifndef CVD_TRACE_SOLVER_SIMULATION_SPACE
98 #define CVD_TRACE_SOLVER_SIMULATION_SPACE(InSimulationSpace) \
99 FChaosVisualDebuggerTrace::TraceSolverSimulationSpace(InSimulationSpace);
100 #endif
101
102 #ifndef CVD_TRACE_PARTICLE_DESTROYED
103 #define CVD_TRACE_PARTICLE_DESTROYED(DestroyedParticleHandle) \
104 FChaosVisualDebuggerTrace::TraceParticleDestroyed(DestroyedParticleHandle);
105 #endif
106
107 #ifndef CVD_TRACE_MID_PHASE
108 #define CVD_TRACE_MID_PHASE(MidPhase) \
109 FChaosVisualDebuggerTrace::TraceMidPhase(MidPhase);
110 #endif
111
112 #ifndef CVD_TRACE_COLLISION_CONSTRAINT
113 #define CVD_TRACE_COLLISION_CONSTRAINT(Constraint) \
114 FChaosVisualDebuggerTrace::TraceCollisionConstraint(Constraint);
115 #endif
116
117 #ifndef CVD_TRACE_COLLISION_CONSTRAINT_VIEW
118 #define CVD_TRACE_COLLISION_CONSTRAINT_VIEW(ConstraintView) \
119 FChaosVisualDebuggerTrace::TraceCollisionConstraintView(ConstraintView);
120 #endif
121
122 #ifndef CVD_TRACE_STEP_MID_PHASES_FROM_COLLISION_CONSTRAINTS
123 #define CVD_TRACE_STEP_MID_PHASES_FROM_COLLISION_CONSTRAINTS(DataChannel, CollisionConstraints) \
124 CVD_SCOPED_DATA_CHANNEL_OVERRIDE(DataChannel) \
125 FChaosVisualDebuggerTrace::TraceMidPhasesFromCollisionConstraints(CollisionConstraints);
126 #endif
127
128 #ifndef CVD_TRACE_INVALIDATE_CACHED_GEOMETRY
129 #define CVD_TRACE_INVALIDATE_CACHED_GEOMETRY(ImplicitObjectPtr) \
130 FChaosVisualDebuggerTrace::InvalidateGeometryFromCache(ImplicitObjectPtr);
131 #endif
132
133 #ifndef CVD_TRACE_INVALIDATE_CACHED_PARTICLE_METADATA
134 #define CVD_TRACE_INVALIDATE_CACHED_PARTICLE_METADATA(ParticleHandlePtr) \
135 FChaosVisualDebuggerTrace::InvalidateParticleMetadataFromCache(ParticleHandlePtr);
136 #endif
137
138 #ifndef CVD_TRACE_SCOPED_SCENE_QUERY
139 #define CVD_TRACE_SCENE_QUERY_START(InputGeometry, GeometryOrientation, Start, End, TraceChannel, Params, ResponseParams, ObjectParams, QueryType, QueryMode, SolverID, bIsRetry) \
140 FChaosVisualDebuggerTrace::TraceSceneQueryStart(InputGeometry, GeometryOrientation, Start, End, TraceChannel, Params, ResponseParams, ObjectParams, QueryType, QueryMode, SolverID, bIsRetry);
141 #endif
142
143 #ifndef CVD_TRACE_SCOPED_SCENE_QUERY_VISIT
144 #define CVD_TRACE_SCOPED_SCENE_QUERY_VISIT(InQueryVisitData) \
145 FChaosVDScopeSceneQueryVisit CVDQueryVisit(InQueryVisitData);
146 #endif
147
148 #ifndef CVD_TRACE_SCENE_QUERY_VISIT
149 #define CVD_TRACE_SCENE_QUERY_VISIT(InQueryVisitData) \
150 FChaosVisualDebuggerTrace::TraceSceneQueryVisit(InQueryVisitData);
151 #endif
152
153 #ifndef CVD_TRACE_JOINT_CONSTRAINTS
154 #define CVD_TRACE_JOINT_CONSTRAINTS(DataChannel, InJointConstraints) \
155 { \
156 CVD_SCOPED_DATA_CHANNEL_OVERRIDE(DataChannel) \
157 FChaosVisualDebuggerTrace::TraceJointsConstraints(InJointConstraints); \
158 }
159 #endif
160
161 #ifndef CVD_TRACE_CHARACTER_GROUND_CONSTRAINTS
162 #define CVD_TRACE_CHARACTER_GROUND_CONSTRAINTS(DataChannel, InConstraints) \
163 { \
164 CVD_SCOPED_DATA_CHANNEL_OVERRIDE(DataChannel) \
165 FChaosVisualDebuggerTrace::TraceCharacterGroundConstraints(InConstraints); \
166 }
167 #endif
168
169 #ifndef CVD_TRACE_CONSTRAINTS_CONTAINER
170 #define CVD_TRACE_CONSTRAINTS_CONTAINER(ContainerView) \
171 FChaosVisualDebuggerTrace::TraceConstraintsContainer(ContainerView);
172 #endif
173
174 #ifndef CVD_TRACE_ACCELERATION_STRUCTURES
175 #define CVD_TRACE_ACCELERATION_STRUCTURES(AccelerationStructuresCollections, SolverType, SolverRef, DataChannel) \
176 { \
177 FChaosVDContext StartAccelerationStrutureCVDContextData; \
178 FChaosVisualDebuggerTrace::GetCVDContext<SolverType>(SolverRef, StartAccelerationStrutureCVDContextData); \
179 CVD_SCOPE_CONTEXT(StartAccelerationStrutureCVDContextData); \
180 CVD_SCOPED_DATA_CHANNEL_OVERRIDE(DataChannel) \
181 FChaosVisualDebuggerTrace::TraceSceneAccelerationStructures(AccelerationStructuresCollections); \
182 }
183 #endif
184
185 #ifndef CVD_TRACE_NETWORK_TICK_OFFSET
186 #define CVD_TRACE_NETWORK_TICK_OFFSET(TickOffset, SolverID) \
187 { \
188 FChaosVisualDebuggerTrace::TraceNetworkTickOffset(TickOffset, SolverID); \
189 }
190 #endif
191
192 #ifndef CVD_TRACE_GET_SOLVER_ID_FROM_WORLD
193 #define CVD_TRACE_GET_SOLVER_ID_FROM_WORLD(World) \
194 FChaosVisualDebuggerTrace::GetSolverIDFromWorld(World)
195 #endif
196
197 #ifndef CVD_TRACE_DEBUG_DRAW_BOX
198 #define CVD_TRACE_DEBUG_DRAW_BOX(Box, ...) \
199 FChaosVisualDebuggerTrace::TraceDebugDrawBox(Box, ##__VA_ARGS__)
200 #endif
201
202 #ifndef CVD_TRACE_DEBUG_DRAW_LINE
203 #define CVD_TRACE_DEBUG_DRAW_LINE(StartLocation, EndLocation, ...) \
204 FChaosVisualDebuggerTrace::TraceDebugDrawLine(StartLocation, EndLocation, ##__VA_ARGS__)
205 #endif
206
207 #ifndef CVD_TRACE_DEBUG_DRAW_VECTOR
208 #define CVD_TRACE_DEBUG_DRAW_VECTOR(StartLocation, Vector, ...) \
209 FChaosVisualDebuggerTrace::TraceDebugDrawVector(StartLocation, Vector, ##__VA_ARGS__)
210 #endif
211
212 #ifndef CVD_TRACE_DEBUG_DRAW_SPHERE
213 #define CVD_TRACE_DEBUG_DRAW_SPHERE(Center, Radius, ...) \
214 FChaosVisualDebuggerTrace::TraceDebugDrawSphere(Center, Radius, ##__VA_ARGS__)
215 #endif
216
217 #ifndef CVD_TRACE_DEBUG_DRAW_IMPLICIT_OBJECT
218 #define CVD_TRACE_DEBUG_DRAW_IMPLICIT_OBJECT(ImplicitObject, ParentTransform, ...) \
219 FChaosVisualDebuggerTrace::TraceDebugDrawImplicitObject(ImplicitObject, ParentTransform, ##__VA_ARGS__)
220 #endif
221
222 #ifndef CVD_SET_RELEVANCY_VOLUME
223 #define CVD_SET_RELEVANCY_VOLUME(VolumeBox) \
224 FChaosVisualDebuggerTrace::SetTraceRelevancyVolume(VolumeBox)
225 #endif
226
227#else // WITH_CHAOS_VISUAL_DEBUGGER
228
229 #ifndef CVD_TRACE_PARTICLE
230 #define CVD_TRACE_PARTICLE(ParticleHandle)
231 #endif
232
233 #ifndef CVD_TRACE_PARTICLES
234 #define CVD_TRACE_PARTICLES(ParticleHandles)
235 #endif
236
237 #ifndef CVD_TRACE_SOLVER_START_FRAME
238 #define CVD_TRACE_SOLVER_START_FRAME(SolverType, SolverRef)
239 #endif
240
241 #ifndef CVD_TRACE_SOLVER_END_FRAME
242 #define CVD_TRACE_SOLVER_END_FRAME(SolverType, SolverRef)
243 #endif
244
245 #ifndef CVD_SCOPE_TRACE_SOLVER_FRAME
246 #define CVD_SCOPE_TRACE_SOLVER_FRAME(SolverType, SolverRef)
247 #endif
248
249 #ifndef CVD_TRACE_SOLVER_STEP_START
250 #define CVD_TRACE_SOLVER_STEP_START(StepName)
251 #endif
252
253 #ifndef CVD_TRACE_SOLVER_STEP_END
254 #define CVD_TRACE_SOLVER_STEP_END()
255 #endif
256
257 #ifndef CVD_SCOPE_TRACE_SOLVER_STEP
258 #define CVD_SCOPE_TRACE_SOLVER_STEP(DataChannel, StepName)
259 #endif
260
261 #ifndef CVD_TRACE_BINARY_DATA
262 #define CVD_TRACE_BINARY_DATA(InData, TypeName, ...)
263 #endif
264
265 #ifndef CVD_TRACE_SOLVER_SIMULATION_SPACE
266 #define CVD_TRACE_SOLVER_SIMULATION_SPACE(InSimulationSpace)
267 #endif
268
269 #ifndef CVD_TRACE_PARTICLES_SOA
270 #define CVD_TRACE_PARTICLES_SOA(ParticleSoA, ...)
271 #endif
272
273 #ifndef CVD_TRACE_PARTICLE_DESTROYED
274 #define CVD_TRACE_PARTICLE_DESTROYED(DestroyedParticleHandle)
275 #endif
276
277 #ifndef CVD_TRACE_MID_PHASE
278 #define CVD_TRACE_MID_PHASE(MidPhase)
279 #endif
280 #ifndef CVD_TRACE_COLLISION_CONSTRAINT
281 #define CVD_TRACE_COLLISION_CONSTRAINT(Constraint)
282 #endif
283 #ifndef CVD_TRACE_COLLISION_CONSTRAINT_VIEW
284 #define CVD_TRACE_COLLISION_CONSTRAINT_VIEW(ConstraintView)
285 #endif
286
287 #ifndef CVD_TRACE_PARTICLES_VIEW
288 #define CVD_TRACE_PARTICLES_VIEW(ParticleHandlesView)
289 #endif
290
291 #ifndef CVD_TRACE_STEP_MID_PHASES_FROM_COLLISION_CONSTRAINTS
292 #define CVD_TRACE_STEP_MID_PHASES_FROM_COLLISION_CONSTRAINTS(DataChannel, CollisionConstraints)
293 #endif
294
295 #ifndef CVD_TRACE_INVALIDATE_CACHED_GEOMETRY
296 #define CVD_TRACE_INVALIDATE_CACHED_GEOMETRY(ImplicitObjectPtr)
297 #endif
298
299 #ifndef CVD_TRACE_INVALIDATE_CACHED_PARTICLE_METADATA
300 #define CVD_TRACE_INVALIDATE_CACHED_PARTICLE_METADATA(ParticleHandlePtr)
301 #endif
302
303 #ifndef CVD_TRACE_SCOPED_SCENE_QUERY
304 #define CVD_TRACE_SCENE_QUERY_START(InputGeometry, GeometryOrientation, Start, End, TraceChannel, Params, ResponseParams, ObjectParams, QueryType, QueryMode, SolverID)
305 #endif
306
307 #ifndef CVD_TRACE_SCOPED_SCENE_QUERY_VISIT
308 #define CVD_TRACE_SCOPED_SCENE_QUERY_VISIT(InQueryVisitData)
309 #endif
310
311 #ifndef CVD_TRACE_SCENE_QUERY_VISIT
312 #define CVD_TRACE_SCENE_QUERY_VISIT(InQueryVisitData)
313 #endif
314
315 #ifndef CVD_TRACE_JOINT_CONSTRAINTS
316 #define CVD_TRACE_JOINT_CONSTRAINTS(DataChannel, InJointConstraints)
317 #endif
318
319 #ifndef CVD_TRACE_CHARACTER_GROUND_CONSTRAINTS
320 #define CVD_TRACE_CHARACTER_GROUND_CONSTRAINTS(DataChannel, InConstraints)
321 #endif
322
323 #ifndef CVD_TRACE_CONSTRAINTS_CONTAINER
324 #define CVD_TRACE_CONSTRAINTS_CONTAINER(ContainerView)
325 #endif
326
327 #ifndef CVD_TRACE_ACCELERATION_STRUCTURES
328 #define CVD_TRACE_ACCELERATION_STRUCTURES(AccelerationStructuresCollections, SolverType, SolverRef, DataChannel)
329 #endif
330
331 #ifndef CVD_TRACE_NETWORK_TICK_OFFSET
332 #define CVD_TRACE_NETWORK_TICK_OFFSET(TickOffset, SolverID)
333 #endif
334
335 #ifndef CVD_TRACE_GET_SOLVER_ID_FROM_WORLD
336 #define CVD_TRACE_GET_SOLVER_ID_FROM_WORLD(World)
337 #endif
338
339 #ifndef CVD_TRACE_DEBUG_DRAW_BOX
340 #define CVD_TRACE_DEBUG_DRAW_BOX(Box, ...)
341 #endif
342
343 #ifndef CVD_TRACE_DEBUG_DRAW_LINE
344 #define CVD_TRACE_DEBUG_DRAW_LINE(StartLocation, EndLocation, ...)
345 #endif
346
347 #ifndef CVD_TRACE_DEBUG_DRAW_VECTOR
348 #define CVD_TRACE_DEBUG_DRAW_VECTOR(StartLocation, Vector, ...)
349 #endif
350
351 #ifndef CVD_TRACE_DEBUG_DRAW_SPHERE
352 #define CVD_TRACE_DEBUG_DRAW_SPHERE(...)
353 #endif
354
355 #ifndef CVD_TRACE_DEBUG_DRAW_IMPLICIT_OBJECT
356 #define CVD_TRACE_DEBUG_DRAW_IMPLICIT_OBJECT(ImplicitObject, ParentTransform, ...)
357 #endif
358
359 #ifndef CVD_SET_RELEVANCY_VOLUME
360 #define CVD_SET_RELEVANCY_VOLUME(VolumeBox)
361 #endif
362
363#endif // WITH_CHAOS_VISUAL_DEBUGGER