5#include "Containers/Map.h"
18#include "MovieSceneEntityGroupingSystem.generated.h"
20#define UE_API MOVIESCENE_API
27struct FAddGroupMutation;
28struct FUpdateGroupsTask;
34 auto Requires(T& In) ->
decltype(&T::InitializeGroupKeys);
80template<
typename GroupingPolicy,
typename ComponentIndices,
typename ...ComponentTypes>
96template<
typename GroupingPolicy>
131template<
typename GroupingPolicy,
int ...ComponentIndices,
typename ...ComponentTypes>
159 VisitLinkedEntities(Item, EntityIDs,
GroupIDs, Builder);
163 VisitUnlinkedEntities(Item, EntityIDs,
GroupIDs, Builder);
234 GroupKeyType Key = this->IndexToGroupKey.FindChecked(GroupIndex);
235 ensure(this->IndexToGroupKey.Remove(GroupIndex) == 1);
236 ensure(this->GroupKeyToIndex.Remove(Key) == 1);
246 GroupKeyType NewKey = Pair.Key;
247 if (Policy.OnObjectsReplaced(NewKey, ReplacementMap))
256 const bool bRemoved = this->GroupKeyToIndex.RemoveAndCopyValue(Pair.Key, GroupIndex);
259 this->GroupKeyToIndex.Add(Pair.Value, GroupIndex);
260 this->IndexToGroupKey.Add(GroupIndex, Pair.Value);
291template<
typename... ComponentTypes>
372 static_assert(
sizeof(
NewGroupHandlerType) <= 256,
"Handler type too big! Please increase the TInlineValue size.");
387 template<
typename ...ComponentTypes>
411 return AllocatedGroupIndices.GetMaxIndex();
414 void FreeEmptyGroups();
420 virtual void OnLink()
override;
421 virtual void OnUnlink()
override;
422 virtual void OnCleanTaggedGarbage()
override;
424 void ProcessModifiedGroups();
436 struct FEntityGroupInfo
438 int32 NumEntities = 0;
448 struct FEntityGroupingHandlerInfo
#define ensure( InExpression)
Definition AssertionMacros.h:464
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr bool EnumHasAllFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:28
typename UE4IntegerSequence_Private::TMakeIntegerSequenceImpl< T, N >::Type TMakeIntegerSequence
Definition IntegerSequence.h:31
#define UE_API
Definition MovieSceneEntityGroupingSystem.h:20
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UE_API
Definition SColorGradingComponentViewer.h:12
constexpr TTuple< std::decay_t< Types >... > MakeTuple(Types &&... Args)
Definition Tuple.h:794
UE_FORCEINLINE_HINT void VisitTupleElements(FuncType &&Func, FirstTupleType &&FirstTuple, TupleTypes &&... Tuples)
Definition Tuple.h:878
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition UObjectGlobals.h:1292
Definition InlineValue.h:22
Definition UnrealString.h.inl:34
Definition SparseArray.h:524
Definition MovieSceneEntityGroupingSystem.h:319
FEntityGroupingPolicyKey AddGrouping(GroupingPolicy &&InPolicy, UE::MovieScene::FEntityComponentFilter &&InComponentFilter, TComponentTypeID< ComponentTypes >... InComponents)
Definition MovieSceneEntityGroupingSystem.h:366
int32 NumGroups() const
Definition MovieSceneEntityGroupingSystem.h:409
FEntityGroupingPolicyKey AddGrouping(TComponentTypeID< ComponentTypes >... InComponents)
Definition MovieSceneEntityGroupingSystem.h:388
Definition MovieSceneEntitySystemLinker.h:113
Definition MovieSceneEntitySystem.h:62
Definition OverriddenPropertySet.cpp:45
bool ReplaceGroupKeyObjectElement(T &&InElem, const TMap< UObject *, UObject * > &ReplacementMap)
Definition MovieSceneEntityGroupingSystem.h:270
Definition ConstraintsManager.h:14
U16 Index
Definition radfft.cpp:71
TCallTraitsParamTypeHelper< T, PassByValue >::ParamType ParamType
Definition UnrealTypeTraits.h:275
Definition IntegerSequence.h:9
Definition MovieSceneEntityGroupingSystem.h:32
auto Requires(T &In) -> decltype(&T::InitializeGroupKeys)
Definition MovieSceneEntityGroupingSystem.cpp:106
Definition BuiltInComponentTypes.h:578
struct UE::MovieScene::FBuiltInComponentTypes::@1489 Tags
FComponentTypeID NeedsLink
Definition BuiltInComponentTypes.h:789
static MOVIESCENE_API FBuiltInComponentTypes * Get()
Definition BuiltInComponentTypes.cpp:667
FComponentTypeID NeedsUnlink
Definition BuiltInComponentTypes.h:790
Definition MovieSceneEntityIDs.h:40
bool Contains(FComponentTypeID InComponentType) const
Definition MovieSceneEntityIDs.h:429
Definition MovieSceneEntitySystemTypes.h:977
MOVIESCENE_API const FComponentMask & GetAllocationType() const
Definition MovieSceneEntitySystemTypes.cpp:154
MOVIESCENE_API const FEntityAllocation * GetAllocation() const
Definition MovieSceneEntitySystemTypes.cpp:144
Definition MovieSceneEntitySystemTypes.h:624
TComponentLock< TRead< T > > ReadComponents(TComponentTypeID< T > ComponentType) const
Definition MovieSceneEntitySystemTypes.h:877
int32 Num() const
Definition MovieSceneEntitySystemTypes.h:813
Definition MovieSceneEntitySystemTypes.h:295
Definition MovieSceneEntityGroupingSystem.h:41
FEntityGroupID MakeInvalidGroupID() const
Definition MovieSceneEntityGroupingSystem.h:47
UE_API void ReportUsedGroupIndex(int32 GroupIndex)
Definition MovieSceneEntityGroupingSystem.cpp:91
UE_API void RemoveEntityFromGroup(const FMovieSceneEntityID &InEntity, const FEntityGroupID &InPreviousGroupID)
Definition MovieSceneEntityGroupingSystem.cpp:51
UE_API int32 AllocateGroupIndex()
Definition MovieSceneEntityGroupingSystem.cpp:99
UE_API void AddEntityToGroup(const FMovieSceneEntityID &InEntity, const FEntityGroupID &InNewGroupID)
Definition MovieSceneEntityGroupingSystem.cpp:25
FEntityGroupID MakeGroupID(int32 GroupIndex) const
Definition MovieSceneEntityGroupingSystem.h:45
Definition BuiltInComponentTypes.h:534
EEntityGroupFlags Flags
Definition BuiltInComponentTypes.h:539
bool HasGroup() const
Definition BuiltInComponentTypes.h:558
Definition BuiltInComponentTypes.h:495
Definition MovieSceneEntityIDs.h:302
Definition MovieSceneSystemTaskDependencies.h:98
Definition MovieSceneSystemTaskDependencies.h:29
Definition MovieSceneEntityGroupingSystem.cpp:155
Definition MovieSceneEntityGroupingSystem.h:66
virtual ~IEntityGroupingHandler()
Definition MovieSceneEntityGroupingSystem.h:67
virtual void ProcessAllocation(FEntityAllocationIteratorItem Item, FReadEntityIDs EntityIDs, TWrite< FEntityGroupID > GroupIDs, FEntityGroupBuilder *Builder)=0
virtual void OnGroupIndexFreed(int32 InGroupIndex)
Definition MovieSceneEntityGroupingSystem.h:69
Definition MovieSceneEntityIDs.h:283
Definition MovieSceneEntityGroupingSystem.h:98
int32 GetOrAllocateGroupIndex(typename TCallTraits< GroupKeyType >::ParamType InGroupKey, FEntityGroupBuilder *Builder)
Definition MovieSceneEntityGroupingSystem.h:101
TMap< int32, GroupKeyType > IndexToGroupKey
Definition MovieSceneEntityGroupingSystem.h:125
typename GroupingPolicy::GroupKeyType GroupKeyType
Definition MovieSceneEntityGroupingSystem.h:99
TMap< GroupKeyType, int32 > GroupKeyToIndex
Definition MovieSceneEntityGroupingSystem.h:124
void VisitLinkedEntities(FEntityAllocationIteratorItem Item, FReadEntityIDs EntityIDs, TWrite< FEntityGroupID > GroupIDs, FEntityGroupBuilder *Builder)
Definition MovieSceneEntityGroupingSystem.h:167
typename GroupingPolicy::GroupKeyType GroupKeyType
Definition MovieSceneEntityGroupingSystem.h:134
void VisitUnlinkedEntities(FEntityAllocationIteratorItem Item, FReadEntityIDs EntityIDs, TWrite< FEntityGroupID > GroupIDs, FEntityGroupBuilder *Builder)
Definition MovieSceneEntityGroupingSystem.h:211
GroupingPolicy Policy
Definition MovieSceneEntityGroupingSystem.h:137
virtual void ProcessAllocation(FEntityAllocationIteratorItem Item, FReadEntityIDs EntityIDs, TWrite< FEntityGroupID > GroupIDs, FEntityGroupBuilder *Builder) override
Definition MovieSceneEntityGroupingSystem.h:149
TTuple< TComponentTypeID< ComponentTypes >... > Components
Definition MovieSceneEntityGroupingSystem.h:140
TEntityGroupingHandlerImpl(GroupingPolicy &&InPolicy, TComponentTypeID< ComponentTypes >... InComponents)
Definition MovieSceneEntityGroupingSystem.h:142
virtual void OnGroupIndexFreed(int32 GroupIndex) override
Definition MovieSceneEntityGroupingSystem.h:232
Definition MovieSceneEntityGroupingSystem.h:81
Definition MovieSceneEntityGroupingSystem.h:86
TEntityGroupingHandler(GroupingPolicy &&InPolicy, TComponentTypeID< ComponentTypes >... InComponents)
Definition MovieSceneEntityGroupingSystem.h:87
Definition MovieSceneComponentPtr.h:195
Definition MovieSceneEntityGroupingSystem.h:293
bool OnObjectsReplaced(GroupKeyType &InOutKey, const TMap< UObject *, UObject * > &ReplacementMap)
Definition MovieSceneEntityGroupingSystem.h:302
bool GetGroupKey(ComponentTypes... InComponents, GroupKeyType &OutGroupKey)
Definition MovieSceneEntityGroupingSystem.h:296
Definition MovieSceneComponentPtr.h:288