UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneObjectBindingID.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "CoreMinimal.h"
7#include "CoreTypes.h"
9#include "Misc/Guid.h"
10#include "MovieSceneFwd.h"
12#include "Templates/TypeHash.h"
13#include "UObject/Class.h"
16
17#include "MovieSceneObjectBindingID.generated.h"
18
19class FArchive;
23
24
25namespace UE
26{
27namespace MovieScene
28{
29
30
31struct FSequenceInstance;
32struct FSharedPlaybackState;
33
34
41{
47
53
59
69
79
89
91
94
97
100
101private:
102
104};
105
106
114{
117
122
123public:
124
126 {
127 return GetTypeHash(A.Guid) ^ GetTypeHash(A.SequenceID);
128 }
129
131 {
132 return A.Guid == B.Guid && A.SequenceID == B.SequenceID;
133 }
134
136 {
137 return A.Guid != B.Guid || A.SequenceID != B.SequenceID;
138 }
139
140public:
141
150
152
161
162public:
163
166
169};
170
171
172} // namespace MovieScene
173} // namespace UE
174
175
176
178UENUM()
180{
182 Local,
184 Root,
185
187 Unused UMETA(Hidden),
188};
189
190
201USTRUCT(BlueprintType, meta=(HasNativeMake))
203{
205
207
208
212 // Defaults purposefully match the equivalent of a legacy root binding
213 // such that any pre-existing ::Root space binding upgrades to ResolveParentIndex = -1
214 // and ::Local space bindings will get upgraded in PostSerialize
215 : SequenceID(int32(MovieSceneSequenceID::Root.GetInternalValue()))
216 , ResolveParentIndex(FixedRootSequenceParentIndex)
217 {
218 LegacyInit();
219 }
220
225 : Guid(InID.Guid)
226 , SequenceID(InID.SequenceID.GetInternalValue())
227 , ResolveParentIndex(InID.ResolveParentIndex)
228 {
229 LegacyInit();
230 }
231
236 : Guid(InID.Guid)
237 , SequenceID(InID.SequenceID.GetInternalValue())
238 , ResolveParentIndex(FixedRootSequenceParentIndex)
239 {
240 LegacyInit();
241 }
242
243
244public:
245
246
251 {
252 Guid = InID.Guid;
253 SequenceID = InID.SequenceID.GetInternalValue();
254 ResolveParentIndex = InID.ResolveParentIndex;
255 return *this;
256 }
257
262 {
263 Guid = InID.Guid;
264 SequenceID = InID.SequenceID.GetInternalValue();
265 ResolveParentIndex = FixedRootSequenceParentIndex;
266 return *this;
267 }
268
269public:
270
272 {
273 return GetTypeHash(A.Guid) ^ GetTypeHash(A.SequenceID);
274 }
275
277 {
278 return A.Guid == B.Guid && A.SequenceID == B.SequenceID && A.ResolveParentIndex == B.ResolveParentIndex;
279 }
280
282 {
283 return A.Guid != B.Guid || A.SequenceID != B.SequenceID || A.ResolveParentIndex != B.ResolveParentIndex;
284 }
285
286
287public:
288
293 bool IsValid() const
294 {
295 return Guid.IsValid();
296 }
297
301 bool IsFixedBinding() const
302 {
303 return Guid.IsValid() && ResolveParentIndex == FixedRootSequenceParentIndex;
304 }
305
309 const FGuid& GetGuid() const
310 {
311 return Guid;
312 }
313
317 void SetGuid(const FGuid& InGuid)
318 {
319#if WITH_EDITORONLY_DATA
320 ensureMsgf(Space_DEPRECATED == EMovieSceneObjectBindingSpace::Unused, TEXT("Assigning a GUID for a binding which has no type specifier - consider using Local / External / Fixed instead"));
321#endif
322 Guid = InGuid;
323 }
324
330 {
331 return FMovieSceneSequenceID(SequenceID);
332 }
333
342
344
353
355
364
373
375
382 MOVIESCENE_API TArrayView<TWeakObjectPtr<>> ResolveBoundObjects(const UE::MovieScene::FSequenceInstance& SequenceInstance) const;
383
384
392
393public:
394
395#if WITH_EDITORONLY_DATA
396 void PostSerialize(const FArchive& Ar);
397#endif
398
399private:
400
401 static constexpr int32 FixedRootSequenceParentIndex = -1;
402
404 UPROPERTY(EditAnywhere, Category="Binding")
405 FGuid Guid;
406
408 UPROPERTY()
409 int32 SequenceID;
410
412 UPROPERTY()
413 int32 ResolveParentIndex;
414
415private:
416 void LegacyInit()
417 {
418#if WITH_EDITORONLY_DATA
419 Space_DEPRECATED = EMovieSceneObjectBindingSpace::Unused;
420#endif
421 }
422
423
424#if WITH_EDITORONLY_DATA
425
427 UPROPERTY()
429
430#endif // WITH_EDITORONLY_DATA
431};
432
433
434template<> struct TStructOpsTypeTraits<FMovieSceneObjectBindingID> : public TStructOpsTypeTraitsBase2<FMovieSceneObjectBindingID>
435{
436#if WITH_EDITORONLY_DATA
437 enum
438 {
439 WithPostSerialize = true,
440 };
441#endif
442};
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#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
EMovieSceneObjectBindingSpace
Definition MovieSceneObjectBindingID.h:180
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition IMovieScenePlayer.h:90
Definition MovieScene.Build.cs:6
Definition ArrayView.h:139
Definition SharedPointer.h:153
Definition MovieSceneSequence.h:73
Definition MovieSceneSequenceID.h:96
Definition AdvancedWidgetsModule.cpp:13
Definition Guid.h:109
Definition MovieSceneObjectBindingID.h:203
FMovieSceneObjectBindingID(const UE::MovieScene::FRelativeObjectBindingID &InID)
Definition MovieSceneObjectBindingID.h:224
UE::MovieScene::FFixedObjectBindingID ReinterpretAsFixed() const
Definition MovieSceneObjectBindingID.h:388
FMovieSceneObjectBindingID & operator=(const UE::MovieScene::FFixedObjectBindingID &InID)
Definition MovieSceneObjectBindingID.h:261
void SetGuid(const FGuid &InGuid)
Definition MovieSceneObjectBindingID.h:317
bool IsValid() const
Definition MovieSceneObjectBindingID.h:293
friend bool operator!=(const FMovieSceneObjectBindingID &A, const FMovieSceneObjectBindingID &B)
Definition MovieSceneObjectBindingID.h:281
friend bool operator==(const FMovieSceneObjectBindingID &A, const FMovieSceneObjectBindingID &B)
Definition MovieSceneObjectBindingID.h:276
FMovieSceneObjectBindingID(const UE::MovieScene::FFixedObjectBindingID &InID)
Definition MovieSceneObjectBindingID.h:235
const FGuid & GetGuid() const
Definition MovieSceneObjectBindingID.h:309
bool IsFixedBinding() const
Definition MovieSceneObjectBindingID.h:301
FMovieSceneSequenceID GetRelativeSequenceID() const
Definition MovieSceneObjectBindingID.h:329
friend uint32 GetTypeHash(const FMovieSceneObjectBindingID &A)
Definition MovieSceneObjectBindingID.h:271
FMovieSceneObjectBindingID & operator=(const UE::MovieScene::FRelativeObjectBindingID &InID)
Definition MovieSceneObjectBindingID.h:250
Definition MovieSceneSequenceHierarchy.h:279
Definition MovieSceneSequenceID.h:13
Definition StructOpsTypeTraits.h:11
@ WithPostSerialize
Definition StructOpsTypeTraits.h:25
Definition StructOpsTypeTraits.h:46
Definition MovieSceneObjectBindingID.h:114
friend bool operator==(const FFixedObjectBindingID &A, const FFixedObjectBindingID &B)
Definition MovieSceneObjectBindingID.h:130
friend bool operator!=(const FFixedObjectBindingID &A, const FFixedObjectBindingID &B)
Definition MovieSceneObjectBindingID.h:135
friend uint32 GetTypeHash(const FFixedObjectBindingID &A)
Definition MovieSceneObjectBindingID.h:125
MOVIESCENE_API FRelativeObjectBindingID ConvertToRelative(FMovieSceneSequenceID SourceSequenceID, TSharedRef< const FSharedPlaybackState > SharedPlaybackState) const
Definition MovieSceneObjectBindingID.cpp:110
FFixedObjectBindingID()
Definition MovieSceneObjectBindingID.h:115
FMovieSceneSequenceID SequenceID
Definition MovieSceneObjectBindingID.h:168
FGuid Guid
Definition MovieSceneObjectBindingID.h:165
FFixedObjectBindingID(const FGuid &InGuid, FMovieSceneSequenceID InSequenceID)
Definition MovieSceneObjectBindingID.h:118
Definition MovieSceneObjectBindingID.h:41
int32 ResolveParentIndex
Definition MovieSceneObjectBindingID.h:99
FRelativeObjectBindingID(const FGuid &InGuid)
Definition MovieSceneObjectBindingID.h:42
FMovieSceneSequenceID SequenceID
Definition MovieSceneObjectBindingID.h:96
FGuid Guid
Definition MovieSceneObjectBindingID.h:93
FRelativeObjectBindingID(const FGuid &InGuid, FMovieSceneSequenceID InSequenceID, int32 InParentIndex)
Definition MovieSceneObjectBindingID.h:54
FRelativeObjectBindingID(const FGuid &InGuid, FMovieSceneSequenceID InSequenceID)
Definition MovieSceneObjectBindingID.h:48
Definition MovieSceneSequenceInstance.h:70
Definition MovieSceneSharedPlaybackState.h:59