UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MassEntityTrace.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Misc/NotNull.h"
7#include "Trace/Config.h"
8#include "Trace/Trace.h"
9
10#ifndef UE_MASS_TRACE_ENABLED
11#define UE_MASS_TRACE_ENABLED (UE_TRACE_ENABLED && WITH_MASSENTITY_DEBUG && !IS_PROGRAM && !UE_BUILD_SHIPPING)
12#endif
13
14#if UE_MASS_TRACE_ENABLED
15
18struct FMassEntityQuery;
22class UMassProcessor;
23
25
26class FMassTrace : public FNoncopyable
27{
28public:
30 {
33
34 void ReportArchetype(const FMassArchetypeData& Archetype);
35 const FMassEntityQuery* Query = nullptr;
37 int32 ChunkCount = 0;
38 int32 EntityCount = 0;
39 };
40
41 MASSENTITY_API static uint64_t OutputBeginPhaseWithID(const TCHAR* PhaseName);
42 MASSENTITY_API static void OutputBeginPhaseRegion(const TCHAR* PhaseName);
43 MASSENTITY_API static void OutputEndPhaseRegion(const TCHAR* PhaseName);
45
47 MASSENTITY_API static void OnPhaseEnd(uint64 PhaseId);
48
50 MASSENTITY_API static uint64 RegisterArchetype(const FMassArchetypeHandle& ArchetypeHandle);
52
55
56 MASSENTITY_API static void EntityCreated(FMassEntityHandle Entity, const FMassArchetypeData& Archetype);
60
65};
66
67#define UE_TRACE_MASS_PHASE_BEGIN(PhaseID) \
68 FMassTrace::OnPhaseBegin(PhaseID);
69
70#define UE_TRACE_MASS_PHASE_END(PhaseID) \
71 FMassTrace::OnPhaseEnd(PhaseID);
72
73#define UE_TRACE_MASS_ARCHETYPE_CREATED(Archetype) \
74 FMassTrace::RegisterArchetype(Archetype);
75
76#define UE_TRACE_MASS_ENTITY_CREATED(Entity, Archetype) \
77 FMassTrace::EntityCreated(Entity, Archetype);
78
79#define UE_TRACE_MASS_ENTITIES_CREATED(EntityHandles, Archetype) \
80 for (const FMassEntityHandle& Entity : EntityHandles) \
81 { \
82 FMassTrace::EntityCreated(Entity, Archetype); \
83 }
84
85#define UE_TRACE_MASS_ENTITY_MOVED(Entity, NewArchetype) \
86 FMassTrace::EntityMoved(Entity, NewArchetype);
87
88#define UE_TRACE_MASS_ENTITY_DESTROYED(Entity) \
89 FMassTrace::EntityDestroyed(Entity);
90
91#define UE_TRACE_MASS_ENTITIES_DESTROYED(EntityHandles) \
92 for (const FMassEntityHandle& Entity : EntityHandles) \
93 { \
94 FMassTrace::EntityDestroyed(Entity); \
95 }
96
97#define UE_TRACE_MASS_QUERY_CREATED() \
98 FMassTrace::QueryCreated(this);
99
100#define UE_TRACE_MASS_QUERY_DESTROYED() \
101 FMassTrace::QueryDestroyed(this);
102
103#define UE_TRACE_MASS_QUERY_REGISTERED_TO_PROCESSOR(Processor) \
104 FMassTrace::QueryRegisteredToProcessor(this, Processor);
105
106#define UE_TRACE_MASS_QUERY_ARCHETYPE_ADDED(Archetype) \
107 FMassTrace::QueryArchetypeAdded(this, Archetype);
108
109#define UE_TRACE_SCOPED_MASS_QUERY_FOR_EACH() \
110 FMassTrace::FScopedQueryForEachTrace _ScopedQueryForEachTrace(this);
111
112#define UE_TRACE_SCOPED_MASS_QUERY_FOR_EACH_REPORT_ARCHETYPE(Archetype) \
113 _ScopedQueryForEachTrace.ReportArchetype(Archetype);
114
115#else //UE_MASS_TRACE_ENABLED
116
117#define UE_TRACE_MASS_ARCHETYPE_CREATED(PhaseID)
118#define UE_TRACE_MASS_ENTITY_CREATED(Entity, Archetype)
119#define UE_TRACE_MASS_ENTITIES_CREATED(EntityHandles, Archetype)
120#define UE_TRACE_MASS_ENTITY_MOVED(Entity, NewArchetype)
121#define UE_TRACE_MASS_ENTITY_DESTROYED(Entity)
122#define UE_TRACE_MASS_ENTITIES_DESTROYED(EntityHandles)
123#define UE_TRACE_MASS_PHASE_BEGIN(PhaseID)
124#define UE_TRACE_MASS_PHASE_END(PhaseID)
125#define UE_TRACE_MASS_QUERY_CREATED()
126#define UE_TRACE_MASS_QUERY_DESTROYED()
127#define UE_TRACE_MASS_QUERY_REGISTERED_TO_PROCESSOR(Processor)
128#define UE_TRACE_MASS_QUERY_ARCHETYPE_ADDED(Archetype)
129#define UE_TRACE_SCOPED_MASS_QUERY_FOR_EACH()
130#define UE_TRACE_SCOPED_MASS_QUERY_FOR_EACH_REPORT_ARCHETYPE(Archetype)
131
132#endif //UE_MASS_TRACE_ENABLED
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
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
T TNotNull
Definition NotNull.h:307
#define UE_TRACE_CHANNEL_EXTERN(ChannelName,...)
Definition Trace.h:448
Definition UnrealTemplate.h:321
Definition MassProcessor.h:78
Definition Class.h:1720
Definition MassEntityTypes.h:74
Definition MassArchetypeData.h:172
Definition MassArchetypeTypes.h:39
Definition MassEntityHandle.h:13
Definition MassEntityManager.h:96
Definition MassEntityQuery.h:51