UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneMutualComponentInclusivity.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
6#include "Containers/Array.h"
11
12#include <initializer_list>
13
14namespace UE::MovieScene
15{
16
17struct FMutualInclusivityGraph;
18struct IMutualComponentInitializer;
19
22{
24 AllOf,
26 AnyOf
27};
28
40
41
44{
49
53
58
60 {
61 return A.Mask == B.Mask && A.Mode == B.Mode;
62 }
63
68
73
74 UE_DEPRECATED(5.2, "This function will no longer be called")
76 {
77 switch (Mode)
78 {
80 {
81 FComponentMask Temp = Mask;
83 return Temp == Mask;
84 }
85 break;
87 {
88 FComponentMask Temp = Mask;
90 return Temp.Find(true) != INDEX_NONE;
91 }
92 break;
93 default:
94 checkf(false, TEXT("Not implemented"));
95 return false;
96 }
97 }
98};
99
100
106{
110 MOVIESCENE_API void Execute(const FEntityRange& Range, const FEntityAllocationWriteContext& WriteContext) const;
111
116
120 void Reset();
121
122private:
123
125};
126
127
132{
145
149 void CheckInvariants() const;
150
151private:
152
153 // Only FMutualInclusivityGraph can populate this command buffer
155
156 enum class ECommandType
157 {
158 Simple,
159 Type,
160 MatchAny,
161 MatchAll,
162 ShortCircuit,
163 Include,
164 Initialize,
165 };
166
167 struct FSimpleCommand
168 {
169 FComponentTypeID MatchID;
170 FComponentTypeID IncludeID;
171 };
172 struct FTypeCommand
173 {
175 uint16 ShortCircuitIndex;
178 };
179
180 struct FMatchCommand
181 {
183 FComponentTypeID ComponentTypeID;
185 uint16 ShortCircuitIndex;
186 };
187
188 struct FShortCircuitCommand
189 {
191 uint16 ShortCircuitIndex;
192 };
193
194 struct FIncludeCommand
195 {
197 FComponentTypeID ComponentTypeID;
198 };
199
200 struct FInitializeCommand
201 {
204 };
205
207 struct FCommand
208 {
209 FCommand(FSimpleCommand InSimple) : Simple(InSimple), CommandType(ECommandType::Simple) {}
210 FCommand(FTypeCommand InType) : Type(InType), CommandType(ECommandType::Type) {}
211 FCommand(FMatchCommand InMatch, EComplexInclusivityFilterMode Mode) : Match(InMatch), CommandType(Mode == EComplexInclusivityFilterMode::AllOf ? ECommandType::MatchAll : ECommandType::MatchAny) {}
212 FCommand(FShortCircuitCommand InShortCircuit) : ShortCircuit(InShortCircuit), CommandType(ECommandType::ShortCircuit) {}
213 FCommand(FIncludeCommand InInclude) : Include(InInclude), CommandType(ECommandType::Include) {}
214 FCommand(FInitializeCommand InInitialize) : Initialize(InInitialize), CommandType(ECommandType::Initialize) {}
215
216 union
217 {
218 FTypeCommand Type;
219 FSimpleCommand Simple;
220 FMatchCommand Match;
221 FShortCircuitCommand ShortCircuit;
222 FIncludeCommand Include;
223 FInitializeCommand Initialize;
224 };
225
227 ECommandType CommandType;
228 };
229
231 TArray<FCommand> Commands;
232};
233
234
239{
243 void DefineMutualInclusionRule(FComponentTypeID Predicate, std::initializer_list<FComponentTypeID> Dependents);
244 void DefineMutualInclusionRule(FComponentTypeID Predicate, std::initializer_list<FComponentTypeID> Dependents, FMutuallyInclusiveComponentParams&& InParams);
245
249 void DefineComplexInclusionRule(const FComplexInclusivityFilter& InFilter, std::initializer_list<FComponentTypeID> Dependents);
250 void DefineComplexInclusionRule(const FComplexInclusivityFilter& InFilter, std::initializer_list<FComponentTypeID> Dependents, FMutuallyInclusiveComponentParams&& InParams);
251
252public:
253
265
266private:
267
272
276 void ReconstructCommandBuffer() const;
277
278private:
279
280 struct FIncludes
281 {
283 {
284 Includes.AddUnique(Component);
285 }
288 };
289 struct FIncludePair
290 {
291 FIncludes MandatoryIncludes;
292 FIncludes OptionalIncludes;
293 };
294
299
301 mutable FMutualInclusivityGraphCommandBuffer CommandBuffer;
303 mutable bool bCommandBufferInvalidated = false;
304};
305
306
307} // namespace UE::MovieScene
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
Definition ConstraintsManager.h:14
EMutuallyInclusiveComponentType
Definition MovieSceneEntitySystemTypes.h:100
EComplexInclusivityFilterMode
Definition MovieSceneMutualComponentInclusivity.h:22
Definition MovieSceneMutualComponentInclusivity.h:44
EComplexInclusivityFilterMode Mode
Definition MovieSceneMutualComponentInclusivity.h:48
friend bool operator==(const FComplexInclusivityFilter &A, const FComplexInclusivityFilter &B)
Definition MovieSceneMutualComponentInclusivity.h:59
FComplexInclusivityFilter(const FComponentMask &InMask, EComplexInclusivityFilterMode InMode)
Definition MovieSceneMutualComponentInclusivity.h:50
FComponentMask Mask
Definition MovieSceneMutualComponentInclusivity.h:46
friend uint32 GetTypeHash(const FComplexInclusivityFilter &Filter)
Definition MovieSceneMutualComponentInclusivity.h:54
static FComplexInclusivityFilter All(std::initializer_list< FComponentTypeID > InComponentTypes)
Definition MovieSceneMutualComponentInclusivity.h:64
static FComplexInclusivityFilter Any(std::initializer_list< FComponentTypeID > InComponentTypes)
Definition MovieSceneMutualComponentInclusivity.h:69
bool Match(FComponentMask Input) const
Definition MovieSceneMutualComponentInclusivity.h:75
Definition MovieSceneEntityIDs.h:40
FComponentMask & CombineWithBitwiseAND(const FComponentMask &Other, EBitwiseOperatorFlags InFlags)
Definition MovieSceneEntityIDs.h:88
int32 Find(bool bValue) const
Definition MovieSceneEntityIDs.h:152
Definition MovieSceneEntityIDs.h:174
Definition MovieSceneEntitySystemDirectedGraph.h:25
Definition MovieSceneEntitySystemTypes.h:425
Definition MovieSceneEntitySystemTypes.h:1046
Definition MovieSceneMutualComponentInclusivity.h:106
void Reset()
Definition MovieSceneMutualComponentInclusivity.cpp:21
Definition MovieSceneMutualComponentInclusivity.h:132
void CheckInvariants() const
Definition MovieSceneMutualComponentInclusivity.cpp:124
int32 ComputeMutuallyInclusiveComponents(EMutuallyInclusiveComponentType TypesToCompute, const FComponentMask &InMask, FComponentMask &OutMask, FMutualComponentInitializers &OutInitializers) const
Definition MovieSceneMutualComponentInclusivity.cpp:34
Definition MovieSceneMutualComponentInclusivity.h:239
int32 ComputeMutuallyInclusiveComponents(EMutuallyInclusiveComponentType TypesToCompute, const FComponentMask &InMask, FComponentMask &OutMask, FMutualComponentInitializers &OutInitializers) const
Definition MovieSceneMutualComponentInclusivity.cpp:216
void DefineMutualInclusionRule(FComponentTypeID Predicate, std::initializer_list< FComponentTypeID > Dependents)
Definition MovieSceneMutualComponentInclusivity.cpp:164
void DefineComplexInclusionRule(const FComplexInclusivityFilter &InFilter, std::initializer_list< FComponentTypeID > Dependents)
Definition MovieSceneMutualComponentInclusivity.cpp:190
Definition MovieSceneMutualComponentInclusivity.h:30
EMutuallyInclusiveComponentType Type
Definition MovieSceneMutualComponentInclusivity.h:38
TUniquePtr< IMutualComponentInitializer > CustomInitializer
Definition MovieSceneMutualComponentInclusivity.h:35
FMutuallyInclusiveComponentParams()
Definition MovieSceneMutualComponentInclusivity.h:31
Definition MovieSceneMutualComponentInitializer.h:12