9#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_6
16#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_6
20#include "MassEntityTypes.generated.h"
41 static constexpr bool TAlwaysFalse =
false;
48 friend struct ::FMassArchetypeData;
49 friend struct ::FMassEntityQuery;
56 , EntityCountRemaining(0)
66 int32 EntityCountRemaining;
253 UE_DEPRECATED(5.7,
"Direct access to FMassArchetypeCompositionDescriptor's bitsets is deprecated. Use any of the newly added getters instead.")
273 UE_DEPRECATED(5.5,
"This FMassArchetypeCompositionDescriptor constructor is deprecated. Please explicitly provide FConstSharedFragmentBitSet.")
278 UE_DEPRECATED(5.5,
"This FMassArchetypeCompositionDescriptor constructor is deprecated. Please explicitly provide FConstSharedFragmentBitSet.")
283 UE_DEPRECATED(5.5,
"This FMassArchetypeCompositionDescriptor constructor is deprecated. Please explicitly provide FConstSharedFragmentBitSet.")
286 ensureMsgf(
false,
TEXT(
"This constructor is defunct. Please update your implementation based on deprecation warning."));
401 UE_DEPRECATED(5.6,
"Use Add or Add_GetRef instead depending on whether you need the return value.")
424 UE_DEPRECATED(5.6,
"Use Add or Add_GetRef instead depending on whether you need the return value.")
567 UE_DEPRECATED(5.5,
"HasExactFragmentTypesMatch is deprecated. Use HasExactSharedFragmentTypesMatch or the two-parameter version of HasExactFragmentTypesMatch.")
592 Add UMETA(Deprecated, DisplayName=
"DEPRECATED_Add"),
593 Remove UMETA(Deprecated, DisplayName=
"DEPRECATED_Remove")
678 return !(Source.
Num() > 0 && Count > 0);
683 const int32 StartIndex = 0;
684 const int32 Count = 0;
693 template<
typename T,
typename...
TOthers>
694 struct TMultiTypeList : TMultiTypeList<TOthers...>
696 using Super = TMultiTypeList<
TOthers...>;
697 using FType = std::remove_const_t<typename TRemoveReference<T>::Type>;
703 template<
typename TBitSetType>
713 struct TMultiTypeList<T>
715 using FType = std::remove_const_t<typename TRemoveReference<T>::Type>;
721 template<
typename TBitSetType>
733 template<
typename T,
typename...
TOthers>
734 struct TMultiArray : TMultiArray<TOthers...>
736 using FType = std::remove_const_t<typename TRemoveReference<T>::Type>;
737 using Super = TMultiArray<
TOthers...>;
746 return FragmentInstances.GetAllocatedSize() + Super::GetAllocatedSize();
749 int GetNumArrays()
const {
return Ordinal + 1; }
753 FragmentInstances.Add(Item);
759 Super::GetAsGenericMultiArray(
A);
765 Super::GetheredAffectedFragments(
OutBitSet);
766 OutBitSet += FMassFragmentBitSet::GetTypeBitSet<FType>();
772 FragmentInstances.Reset();
780 struct TMultiArray<T>
782 using FType = std::remove_const_t<typename TRemoveReference<T>::Type>;
787 return FragmentInstances.GetAllocatedSize();
790 int GetNumArrays()
const {
return Ordinal + 1; }
792 void Add(
const FType& Item) { FragmentInstances.Add(Item); }
801 OutBitSet += FMassFragmentBitSet::GetTypeBitSet<FType>();
806 FragmentInstances.Reset();
826#if WITH_MASSENTITY_DEBUG
838 if constexpr (std::is_same_v<FMassFragment, T>)
842 else if constexpr (std::is_same_v<FMassTag, T>)
846 else if constexpr (std::is_same_v<FMassChunkFragment, T>)
850 else if constexpr (std::is_same_v<FMassSharedFragment, T>)
854 else if constexpr (std::is_same_v<FMassConstSharedFragment, T>)
860 static_assert(UE::Mass::TAlwaysFalse<T>,
"Unknown element type passed to GetContainer.");
867 if constexpr (std::is_same_v<FMassFragment, T>)
871 else if constexpr (std::is_same_v<FMassTag, T>)
875 else if constexpr (std::is_same_v<FMassChunkFragment, T>)
879 else if constexpr (std::is_same_v<FMassSharedFragment, T>)
883 else if constexpr (std::is_same_v<FMassConstSharedFragment, T>)
889 static_assert(UE::Mass::TAlwaysFalse<T>,
"Unknown element type passed to GetContainer.");
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define DECLARE_CYCLE_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:679
#define DECLARE_STATS_GROUP(GroupDesc, GroupId, GroupCat)
Definition Stats.h:689
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 DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
EMassObservedOperation
Definition MassEntityTypes.h:579
EMassExecutionContextType
Definition MassEntityTypes.h:612
EMassObservedOperationFlags
Definition MassEntityTypes.h:597
MASSENTITY_API FString LexToString(const EMassObservedOperationFlags Value)
Definition MassEntityTypes.cpp:19
#define UENUM(...)
Definition ObjectMacros.h:749
#define DECLARE_CLASSTYPEBITSET_EXPORTED(EXPORTED_API, ContainerTypeName, BaseStructType)
Definition StructTypeBitSet.h:1222
#define DECLARE_STRUCTTYPEBITSET_EXPORTED(EXPORTED_API, ContainerTypeName, BaseStructType)
Definition StructTypeBitSet.h:1220
TConstArrayView< const UScriptStruct * > TConstArrayView< const UScriptStruct * >
Definition TypedElementQueryCapabilities.inl:16
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition NameTypes.h:617
Definition UnrealType.h:3087
Definition OutputDevice.h:133
Definition ArrayView.h:139
UE_FORCEINLINE_HINT constexpr SizeType Num() const
Definition ArrayView.h:380
constexpr TArrayView Slice(SizeType Index, SizeType InNum) const
Definition ArrayView.h:426
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_REWRITE bool IsEmpty() const
Definition Array.h:1133
UE_NODEBUG UE_FORCEINLINE_HINT SIZE_T GetAllocatedSize(void) const
Definition Array.h:1059
SizeType IndexOfByPredicate(Predicate Pred) const
Definition Array.h:1423
UE_NODEBUG void Sort()
Definition Array.h:3418
Definition Subsystem.h:48
Definition MassEntityConcepts.h:32
Definition MassEntityConcepts.h:29
SIZE_T GetAllocatedSize(const T &Value)
Definition ManagedArray.h:93
Definition MassArchetypeData.h:21
typename Private::TElementTypeHelper< T >::Type TElementType
Definition MassEntityConcepts.h:58
bool IsA< FMassSharedFragment >(const UStruct *Struct)
Definition MassEntityElementTypes.h:73
bool IsA< FMassConstSharedFragment >(const UStruct *Struct)
Definition MassEntityElementTypes.h:79
U16 Index
Definition radfft.cpp:71
Definition SharedStruct.h:538
Definition InstancedStruct.h:32
Definition MassEntityTypes.h:74
bool IsIdentical(const FMassArchetypeCompositionDescriptor &OtherDescriptor) const
Definition MassEntityTypes.h:148
void Add()
Definition MassEntityTypes.h:901
const FMassFragmentBitSet & GetFragments() const
Definition MassEntityTypes.h:907
void SetFragments(const FMassFragmentBitSet &InBitSet)
Definition MassEntityTypes.h:957
FMassTagBitSet Tags
Definition MassEntityTypes.h:257
FMassArchetypeCompositionDescriptor(TConstArrayView< const UScriptStruct * > InFragments, const FMassTagBitSet &InTags, const FMassChunkFragmentBitSet &InChunkFragments, const FMassSharedFragmentBitSet &InSharedFragments, const FMassConstSharedFragmentBitSet &InConstSharedFragments)
Definition MassEntityTypes.h:88
FMassArchetypeCompositionDescriptor(TConstArrayView< FInstancedStruct > InFragmentInstances, const FMassTagBitSet &InTags, const FMassChunkFragmentBitSet &InChunkFragments, const FMassSharedFragmentBitSet &InSharedFragments, const FMassConstSharedFragmentBitSet &InConstSharedFragments)
Definition MassEntityTypes.h:96
FMassArchetypeCompositionDescriptor CalculateDifference(const FMassArchetypeCompositionDescriptor &OtherDescriptor) const
Definition MassEntityTypes.h:197
MASSENTITY_API int32 CountStoredTypes() const
Definition MassEntityTypes.cpp:65
bool IsEquivalent(const FMassArchetypeCompositionDescriptor &OtherDescriptor) const
Definition MassEntityTypes.h:136
bool Contains() const
Definition MassEntityTypes.h:894
FMassArchetypeCompositionDescriptor(const FMassFragmentBitSet &InFragments, const FMassTagBitSet &InTags, const FMassChunkFragmentBitSet &InChunkFragments, const FMassSharedFragmentBitSet &InSharedFragments, const FMassConstSharedFragmentBitSet &InConstSharedFragments)
Definition MassEntityTypes.h:76
const FMassTagBitSet & GetTags() const
Definition MassEntityTypes.h:912
auto & GetContainer() const
FMassArchetypeCompositionDescriptor(FMassFragmentBitSet &&InFragments)
Definition MassEntityTypes.h:116
FMassChunkFragmentBitSet ChunkFragments
Definition MassEntityTypes.h:260
void Remove(const FMassArchetypeCompositionDescriptor &OtherDescriptor)
Definition MassEntityTypes.h:184
void SetConstSharedFragments(const FMassConstSharedFragmentBitSet &InBitSet)
Definition MassEntityTypes.h:977
bool IsEmpty() const
Definition MassEntityTypes.h:157
FMassFragmentBitSet Fragments
Definition MassEntityTypes.h:254
void SetTags(const FMassTagBitSet &InBitSet)
Definition MassEntityTypes.h:962
FMassConstSharedFragmentBitSet ConstSharedFragments
Definition MassEntityTypes.h:266
FMassArchetypeCompositionDescriptor(FMassTagBitSet &&InTags)
Definition MassEntityTypes.h:120
const FMassSharedFragmentBitSet & GetSharedFragments() const
Definition MassEntityTypes.h:922
const FMassConstSharedFragmentBitSet & GetConstSharedFragments() const
Definition MassEntityTypes.h:927
FMassArchetypeCompositionDescriptor()=default
const FMassChunkFragmentBitSet & GetChunkFragments() const
Definition MassEntityTypes.h:917
void SetSharedFragments(const FMassSharedFragmentBitSet &InBitSet)
Definition MassEntityTypes.h:972
void Append(const FMassArchetypeCompositionDescriptor &OtherDescriptor)
Definition MassEntityTypes.h:175
void SetChunkFragments(const FMassChunkFragmentBitSet &InBitSet)
Definition MassEntityTypes.h:967
FMassArchetypeCompositionDescriptor(FMassFragmentBitSet &&InFragments, FMassTagBitSet &&InTags, FMassChunkFragmentBitSet &&InChunkFragments, FMassSharedFragmentBitSet &&InSharedFragments, FMassConstSharedFragmentBitSet &&InConstSharedFragments)
Definition MassEntityTypes.h:104
FMassSharedFragmentBitSet SharedFragments
Definition MassEntityTypes.h:263
uint32 CalculateHash() const
Definition MassEntityTypes.h:214
void Reset()
Definition MassEntityTypes.h:124
MASSENTITY_API void DebugOutputDescription(FOutputDevice &Ar) const
Definition MassEntityTypes.cpp:74
bool HasAll(const FMassArchetypeCompositionDescriptor &OtherDescriptor) const
Definition MassEntityTypes.h:166
Definition MassEntityTypes.h:816
int32 ChunkMemorySize
Definition MassEntityTypes.h:821
FMassArchetypeCreationParams()=default
FMassArchetypeCreationParams(const struct FMassArchetypeData &Archetype)
FName DebugName
Definition MassEntityTypes.h:824
Definition MassArchetypeData.h:172
Definition MassEntityTypes.h:297
const TArray< FConstSharedStruct > & GetConstSharedFragments() const
Definition MassEntityTypes.h:467
const FMassConstSharedFragmentBitSet & GetConstSharedFragmentBitSet() const
Definition MassEntityTypes.h:505
FMassConstSharedFragmentBitSet ConstSharedFragmentBitSet
Definition MassEntityTypes.h:559
uint32 HashCache
Definition MassEntityTypes.h:551
bool HasAllRequiredSharedFragmentTypes(const FMassSharedFragmentBitSet &InSharedFragmentBitSet) const
Definition MassEntityTypes.h:315
bool HasExactFragmentTypesMatch(const FMassSharedFragmentBitSet &InSharedFragmentBitSet, const FMassConstSharedFragmentBitSet &InConstSharedFragmentBitSet) const
Definition MassEntityTypes.h:304
FMassArchetypeSharedFragmentValues()=default
FSharedStruct AddSharedFragment(const FSharedStruct &Fragment)
Definition MassEntityTypes.h:425
FConstSharedStruct AddConstSharedFragment(const FConstSharedStruct &Fragment)
Definition MassEntityTypes.h:402
FConstSharedStruct GetSharedFragmentStruct(const UScriptStruct *StructType) const
Definition MassEntityTypes.h:494
MASSENTITY_API void ReplaceSharedFragments(TConstArrayView< FSharedStruct > Fragments)
Definition MassEntityTypes.cpp:166
TArray< FConstSharedStruct > ConstSharedFragments
Definition MassEntityTypes.h:560
bool IsSorted() const
Definition MassEntityTypes.h:991
FMassArchetypeSharedFragmentValues & operator=(const FMassArchetypeSharedFragmentValues &OtherFragmentValues)=default
bool HasAllRequiredConstSharedFragmentTypes(const FMassConstSharedFragmentBitSet &InConstSharedFragmentBitSet) const
Definition MassEntityTypes.h:325
MASSENTITY_API bool HasSameValues(const FMassArchetypeSharedFragmentValues &Other) const
Definition MassEntityTypes.cpp:267
FMassArchetypeSharedFragmentValues(FMassArchetypeSharedFragmentValues &&OtherFragmentValues)=default
int32 Remove(const FMassArchetypeCompositionDescriptor &InDescriptor)
Definition MassEntityTypes.h:462
bool bSorted
Definition MassEntityTypes.h:556
FMassSharedFragmentBitSet SharedFragmentBitSet
Definition MassEntityTypes.h:558
const TArray< FSharedStruct > & GetSharedFragments() const
Definition MassEntityTypes.h:477
FSharedStruct GetSharedFragmentStruct(const UScriptStruct *StructType)
Definition MassEntityTypes.h:488
bool HasExactSharedFragmentTypesMatch(const FMassSharedFragmentBitSet &InSharedFragmentBitSet) const
Definition MassEntityTypes.h:310
void DirtyHashCache()
Definition MassEntityTypes.h:510
TArray< FSharedStruct > & GetMutableSharedFragments()
Definition MassEntityTypes.h:472
friend uint32 GetTypeHash(const FMassArchetypeSharedFragmentValues &SharedFragmentValues)
Definition MassEntityTypes.h:525
TArray< FSharedStruct > SharedFragments
Definition MassEntityTypes.h:561
bool HasExactConstSharedFragmentTypesMatch(const FMassConstSharedFragmentBitSet &InConstSharedFragmentBitSet) const
Definition MassEntityTypes.h:320
void CacheHash() const
Definition MassEntityTypes.h:517
void Sort()
Definition MassEntityTypes.h:534
const FMassSharedFragmentBitSet & GetSharedFragmentBitSet() const
Definition MassEntityTypes.h:500
FConstSharedStruct GetConstSharedFragmentStruct(const UScriptStruct *StructType) const
Definition MassEntityTypes.h:482
void Reset()
Definition MassEntityTypes.h:1001
FMassArchetypeSharedFragmentValues & operator=(FMassArchetypeSharedFragmentValues &&OtherFragmentValues)=default
MASSENTITY_API FConstSharedStruct Add_GetRef(const FConstSharedStruct &Fragment)
Definition MassEntityTypes.cpp:126
MASSENTITY_API uint32 CalculateHash() const
Definition MassEntityTypes.cpp:188
FMassArchetypeSharedFragmentValues(const FMassArchetypeSharedFragmentValues &OtherFragmentValues)=default
bool IsEquivalent(const FMassArchetypeSharedFragmentValues &OtherSharedFragmentValues) const
Definition MassEntityTypes.h:339
void Add(const FSharedStruct &Fragment)
Definition MassEntityTypes.h:411
void Add(const FConstSharedStruct &Fragment)
Definition MassEntityTypes.h:388
SIZE_T GetAllocatedSize() const
Definition MassEntityTypes.h:983
bool ContainsType(const UScriptStruct *FragmentType) const
Definition MassEntityTypes.h:352
bool ContainsType() const
Definition MassEntityTypes.h:368
bool DoesMatchComposition(const FMassArchetypeCompositionDescriptor &InDescriptor) const
Definition MassEntityTypes.h:333
bool IsEmpty() const
Definition MassEntityTypes.h:996
Definition MassEntityElementTypes.h:30
Definition MassEntityElementTypes.h:42
Definition MassEntityQuery.h:51
Definition MassEntityElementTypes.h:10
Definition MassEntityTypes.h:658
int32 Num() const
Definition MassEntityTypes.h:671
FStructArrayView operator[](const int32 Index) const
Definition MassEntityTypes.h:665
FMassGenericPayloadViewSlice(const FMassGenericPayloadView &InSource, const int32 InStartIndex, const int32 InCount)
Definition MassEntityTypes.h:660
bool IsEmpty() const
Definition MassEntityTypes.h:676
FMassGenericPayloadViewSlice()=default
Definition MassEntityTypes.h:623
int32 Num() const
Definition MassEntityTypes.h:632
void Swap(const int32 A, const int32 B)
Definition MassEntityTypes.h:639
TArrayView< FStructArrayView > Content
Definition MassEntityTypes.h:650
FMassGenericPayloadView(TArray< FStructArrayView > &SourceData)
Definition MassEntityTypes.h:625
FMassGenericPayloadView(TArrayView< FStructArrayView > SourceData)
Definition MassEntityTypes.h:628
FMassGenericPayloadView()=default
void Reset()
Definition MassEntityTypes.h:634
void SwapElementsToEnd(int32 StartIndex, int32 NumToMove)
Definition MassEntityTypes.cpp:387
Definition MassEntityElementTypes.h:36
Definition MassEntityElementTypes.h:24
Definition SharedStruct.h:161
Definition StructArrayView.h:19
Definition StructUtilsTypes.h:75
Definition StructUtilsTypes.h:109
Definition MassEntityTypes.h:47
int32 EntityLimit
Definition MassEntityTypes.h:60
FExecutionLimiter(int32 InEntityLimit)
Definition MassEntityTypes.h:51