10#define UE_API MASSENTITY_API
19 struct FRelationManager;
36 bIsEmpty = bIsEmpty &&
Container.IsEmpty();
71 template<UE::Mass::CRelation T>
157 template<UE::Mass::CRelation T>
184 ,
TEXT(
"Provided RelationType, %s, is not a relation type")
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
T TNotNull
Definition NotNull.h:307
#define UE_API
Definition SColorGradingComponentViewer.h:12
Definition ArrayView.h:139
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition UnrealString.h.inl:34
Definition StaticArray.h:26
ERelationRole
Definition MassEntityRelations.h:46
Definition MassArchetypeData.h:21
bool IsA< FMassRelation >(const UStruct *Struct)
Definition MassEntityRelations.h:334
U16 Index
Definition radfft.cpp:71
Definition MassEntityHandle.h:13
Definition MassEntityManager.h:96
Definition MassExecutionContext.h:29
Definition MassEntityRelations.h:240
Definition MassRelationManager.h:28
TArray< FMassRelationRoleInstanceHandle > & operator[](const ERelationRole Index)
Definition MassRelationManager.h:51
TArray< FMassRelationRoleInstanceHandle > & operator[](const int32 Index)
Definition MassRelationManager.h:41
const TArray< FMassRelationRoleInstanceHandle > & operator[](const ERelationRole Index) const
Definition MassRelationManager.h:56
const TArray< FMassRelationRoleInstanceHandle > & operator[](const int32 Index) const
Definition MassRelationManager.h:46
bool IsEmpty() const
Definition MassRelationManager.h:31
TStaticArray< TArray< FMassRelationRoleInstanceHandle >, static_cast< uint32 >(ERelationRole::MAX)> RelationEntityContainers
Definition MassRelationManager.h:29
Definition MassRelationManager.h:22
const FRelationTypeTraits Traits
Definition MassRelationManager.h:25
TMap< FMassEntityHandle, FRelationInstanceData > RoleMap
Definition MassRelationManager.h:61
TArray< FMassEntityHandle > GetParticipants(const FMassEntityManager &EntityManager, const FMassEntityHandle RoleEntity, ERelationRole QueriedRole) const
Definition MassRelationManager.cpp:82
Definition MassRelationManager.h:124
uint32 Num() const
Definition MassRelationManager.h:137
const TArray< FMassEntityHandle > & operator[](const uint32 Depth) const
Definition MassRelationManager.h:132
TArray< FMassEntityHandle > & operator[](const uint32 Depth)
Definition MassRelationManager.h:128
void StoreUnique(const uint32 Depth, TArray< FMassEntityHandle > &InOutArray)
Definition MassRelationManager.cpp:109
TSet< FMassEntityHandle > ExistingElements
Definition MassRelationManager.h:143
TArray< TArray< FMassEntityHandle > > ContainerPerLevel
Definition MassRelationManager.h:142
Definition MassRelationManager.h:68
TArray< FMassEntityHandle > GetRelationSubjects(TNotNull< const UScriptStruct * > RelationType, const FMassEntityHandle ObjectEntity) const
Definition MassRelationManager.h:205
const FRelationData * GetRelationData(const FTypeHandle RelationTypeHandle) const
Definition MassRelationManager.h:190
const FRelationData & GetRelationDataChecked(const FTypeHandle RelationTypeHandle) const
Definition MassRelationManager.h:195
UE_API bool IsSubjectOfRelationRecursive(const FTypeHandle RelationTypeHandle, const FMassEntityHandle Subject, const FMassEntityHandle Object) const
Definition MassRelationManager.cpp:475
FRelationData & CreateRelationData(const FTypeHandle RelationTypeHandle)
Definition MassRelationManager.cpp:425
TMap< FTypeHandle, FRelationData > RelationsDataMap
Definition MassRelationManager.h:151
FTypeHandle GetRelationTypeHandle(TNotNull< const UScriptStruct * > RelationType) const
Definition MassRelationManager.h:181
FMassEntityHandle CreateRelationInstance(FMassEntityHandle Subject, FMassEntityHandle Object)
Definition MassRelationManager.h:158
TArray< FMassEntityHandle > GetRelationEntities(TConstArrayView< FMassRelationRoleInstanceHandle > RelationEntitiesContainer) const
Definition MassRelationManager.cpp:402
FMassEntityManager & EntityManager
Definition MassRelationManager.h:148
UE_API bool DestroyRelationInstance(const FTypeHandle RelationTypeHandle, const FMassEntityHandle Subject, const FMassEntityHandle Object)
Definition MassRelationManager.cpp:331
UE_API bool IsSubjectOfRelation(const FTypeHandle RelationTypeHandle, const FMassEntityHandle Subject, const FMassEntityHandle Object) const
Definition MassRelationManager.cpp:442
TArray< FMassEntityHandle > CreateRelationInstances(TNotNull< const UScriptStruct * > RelationType, TArrayView< FMassEntityHandle > Subjects, TArrayView< FMassEntityHandle > Objects)
Definition MassRelationManager.h:170
void OnRelationTypeRegistered(const FTypeHandle RegisteredTypeHandle, const FRelationTypeTraits &RelationTypeTraits)
Definition MassRelationManager.cpp:523
void GatherHierarchy(const FRelationData &RelationData, const FMassEntityHandle SubjectHandle, FHierarchyEntitiesContainer &SubSubjects, uint32 Depth=0) const
Definition MassRelationManager.cpp:376
TArray< FMassEntityHandle > GetRoleEntities(TConstArrayView< FMassRelationRoleInstanceHandle > RelationEntitiesContainer) const
Definition MassRelationManager.cpp:418
const FTypeManager & TypeManager
Definition MassRelationManager.h:149
TArray< FMassEntityHandle > GetRelationObjects(TNotNull< const UScriptStruct * > RelationType, const FMassEntityHandle SubjectEntity) const
Definition MassRelationManager.h:217
Definition MassTypeManager.h:27
bool IsValid() const
Definition MassTypeManager.h:224
Definition MassTypeManager.h:141
UE_API FTypeHandle GetRelationTypeHandle(const TNotNull< const UScriptStruct * > RelationOrElementType) const
Definition MassTypeManager.cpp:130
Definition MassEntityRelations.h:105