6#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_6
13#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_6
18#define UE_API MASSENTITY_API
20#ifndef WITH_ARCHETYPE_MATCH_OVERRIDE
21#define WITH_ARCHETYPE_MATCH_OVERRIDE (WITH_EDITOR)
24#ifndef MASS_ACHETYPE_OVERRIDE_MAX_SIZE
25#define MASS_ACHETYPE_OVERRIDE_MAX_SIZE 16
28#ifndef MASS_ACHETYPE_OVERRIDE_MAX_ALIGNMENT
29#define MASS_ACHETYPE_OVERRIDE_MAX_ALIGNMENT 8
32#if WITH_ARCHETYPE_MATCH_OVERRIDE
36 {
static_cast<const T*
>(
nullptr)->Match(Descriptor) } -> std::convertible_to<bool>;
58 struct FArchetypeMatchOverride
62 MatchFunction Match =
nullptr;
132 EntitySubsystemHash = 0;
133 LastUpdatedArchetypeDataVersion = 0;
148 || bRequiresMutatingWorldAccess;
157 return ValidArchetypes;
213#if WITH_ARCHETYPE_MATCH_OVERRIDE
259 uint32 EntitySubsystemHash = 0;
260 uint32 LastUpdatedArchetypeDataVersion = 0;
266 struct FArchetypeGroupingStep
268 FArchetypeGroupingStep() =
default;
287 uint8 bAllowParallelCommands : 1 =
true;
288 uint8 bRequiresMutatingWorldAccess : 1 =
false;
289#if WITH_ARCHETYPE_MATCH_OVERRIDE
295#if WITH_MASSENTITY_DEBUG
296 uint8 bRegistered : 1 =
false;
299#if WITH_ARCHETYPE_MATCH_OVERRIDE
307 UE_DEPRECATED(5.6,
"This type of FMassEntityQuery is no longer supported. Use one of the other constructors instead.")
319 UE_DEPRECATED(5.6,
"ForEachEntityChunk is deprecated. New version doesn't require the FMassEntityManager parameter")
354#if WITH_ARCHETYPE_MATCH_OVERRIDE
356void FMassEntityQuery::SetArchetypeMatchOverride(
const T&
Context)
358 static_assert(
sizeof(T) <=
sizeof(FArchetypeMatchOverride));
359 static_assert(
alignof(T) <=
alignof(FArchetypeMatchOverride));
360 static_assert(std::is_trivially_copyable_v<T>);
361 static_assert(std::is_trivially_destructible_v<T>);
369 return Context->Match(Descriptor);
383 return !GroupSortingSteps.
IsEmpty();
391#undef MASS_ACHETYPE_OVERRIDE_MAX_SIZE
392#undef MASS_ACHETYPE_OVERRIDE_MAX_ALIGNMENT
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define MASS_ACHETYPE_OVERRIDE_MAX_SIZE
Definition MassEntityQuery.h:25
#define UE_API
Definition MassEntityQuery.h:18
#define MASS_ACHETYPE_OVERRIDE_MAX_ALIGNMENT
Definition MassEntityQuery.h:29
EMassExecutionContextType
Definition MassEntityTypes.h:612
EMassFragmentAccess
Definition MassRequirements.h:18
T * New(FMemStackBase &Mem, int32 Count=1, int32 Align=DEFAULT_ALIGNMENT)
Definition MemStack.h:259
const bool
Definition NetworkReplayStreaming.h:178
TConstArrayView< const UScriptStruct * > TConstArrayView< const UScriptStruct * >
Definition TypedElementQueryCapabilities.inl:16
Definition UnrealType.h:3087
UE_REWRITE bool IsEmpty() const
Definition Array.h:1133
Definition SharedPointer.h:692
TSharedRef< ObjectType, Mode > ToSharedRef() const &
Definition SharedPointer.h:1028
Definition SharedPointer.h:153
Definition SubclassOf.h:30
Definition MassProcessor.h:78
Definition MassEntityTypes.h:74
Definition MassArchetypeTypes.h:93
Definition MassArchetypeTypes.h:39
Definition MassDebugger.h:441
Definition MassEntityManager.h:96
Definition MassEntityQuery.h:51
EParallelExecutionFlags
Definition MassEntityQuery.h:68
UE_API TArray< FMassEntityHandle > GetMatchingEntityHandles()
Definition MassEntityQuery.cpp:647
void SetParallelCommandBufferEnabled(const bool bInAllowParallelCommands)
Definition MassEntityQuery.h:232
EParallelForMode
Definition MassEntityQuery.h:314
@ Default
Definition MassEntityQuery.h:315
@ ForceParallelExecution
Definition MassEntityQuery.h:316
UE_API void RegisterWithProcessor(UMassProcessor &Owner)
Definition MassEntityQuery.cpp:105
static constexpr int32 ArchetypeMatchOverrideSize
Definition MassEntityQuery.h:52
void RequireMutatingWorldAccess()
Definition MassEntityQuery.h:151
UE_API void CacheArchetypes()
Definition MassEntityQuery.cpp:116
FMassSubsystemRequirements & AddSubsystemRequirement(const TSubclassOf< USubsystem > SubsystemClass, const EMassFragmentAccess AccessMode)
Definition MassEntityQuery.h:138
void SetChunkFilter(const FMassChunkConditionFunction &InFunction)
Definition MassEntityQuery.h:375
bool DoesRequireGameThreadExecution() const
Definition MassEntityQuery.h:144
FMassEntityQuery()=default
void ClearChunkFilter()
Definition MassEntityQuery.h:199
UE_API void DebugEnableEntityOwnerLogging()
Definition MassEntityQuery.cpp:785
UE_API void ForEachEntityChunkInCollections(TConstArrayView< FMassArchetypeEntityCollection > EntityCollections, FMassExecutionContext &ExecutionContext, const FMassExecuteFunction &ExecuteFunction)
Definition MassEntityQuery.cpp:211
UE_API void ForEachEntityChunk(FMassExecutionContext &ExecutionContext, const FMassExecuteFunction &ExecuteFunction)
Definition MassEntityQuery.cpp:229
UE_API void GroupBy(UE::Mass::FArchetypeGroupType GroupType)
Definition MassEntityQuery.cpp:661
bool IsEmpty() const
Definition MassEntityQuery.h:153
UE_API void ParallelForEachEntityChunkInCollection(TConstArrayView< FMassArchetypeEntityCollection > EntityCollections, FMassExecutionContext &ExecutionContext, const FMassExecuteFunction &ExecuteFunction, const EParallelExecutionFlags Flags=EParallelExecutionFlags::Default)
Definition MassEntityQuery.cpp:411
UE_API const FMassQueryRequirementIndicesMapping & GetRequirementsMappingForArchetype(const FMassArchetypeHandle ArchetypeHandle) const
Definition MassEntityQuery.cpp:771
void Clear()
Definition MassEntityQuery.h:122
bool HasChunkFilter() const
Definition MassEntityQuery.h:201
UE_API void ResetGrouping()
Definition MassEntityQuery.cpp:675
UE_API bool HasMatchingEntities()
Definition MassEntityQuery.cpp:618
UE_API TArray< FMassArchetypeEntityCollection > CreateMatchingEntitiesCollection()
Definition MassEntityQuery.cpp:633
UE_API void ParallelForEachEntityChunk(FMassExecutionContext &ExecutionContext, const FMassExecuteFunction &ExecuteFunction, const EParallelExecutionFlags Flags=EParallelExecutionFlags::Default)
Definition MassEntityQuery.cpp:429
UE_API void ExportRequirements(FMassExecutionRequirements &OutRequirements) const
Definition MassEntityQuery.cpp:779
static constexpr uint32 ArchetypeMatchOverrideAlignment
Definition MassEntityQuery.h:53
void DirtyCachedData()
Definition MassEntityQuery.h:130
const TArray< FMassArchetypeHandle > & GetArchetypes() const
Definition MassEntityQuery.h:155
UE_API int32 GetNumMatchingEntities()
Definition MassEntityQuery.cpp:588
bool IsGrouping() const
Definition MassEntityQuery.h:381
const TSharedPtr< FMassEntityManager > & GetEntityManager() const
Definition MassEntityQuery.h:386
Definition MassExecutionContext.h:29
Definition MassProcessorDependencySolver.h:68
Definition MassRequirements.h:160
TSharedPtr< FMassEntityManager > CachedEntityManager
Definition MassRequirements.h:578
bool DoesRequireGameThreadExecution() const
Definition MassRequirements.h:822
MASSENTITY_API void Reset()
Definition MassRequirements.cpp:293
MASSENTITY_API bool IsEmpty() const
Definition MassRequirements.cpp:219
Definition MassArchetypeTypes.h:326
Definition MassRequirements.h:72
bool DoesRequireGameThreadExecution() const
Definition MassRequirements.h:651
bool IsEmpty() const
Definition MassRequirements.h:646
MASSENTITY_API void Reset()
Definition MassRequirements.cpp:65
FMassSubsystemRequirements & AddSubsystemRequirement(const EMassFragmentAccess AccessMode)
Definition MassRequirements.h:78
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
Definition TypeCompatibleBytes.h:17
Definition MassArchetypeGroup.h:56
Definition MassArchetypeGroup.h:15
Definition MassEntityTypes.h:47