UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneTrack.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7#include "Containers/Array.h"
9#include "CoreMinimal.h"
10#include "CoreTypes.h"
14#include "HAL/Platform.h"
16#include "Math/Color.h"
18#include "Misc/EnumClassFlags.h"
19#include "Misc/Guid.h"
20#include "Misc/InlineValue.h"
24#include "UObject/NameTypes.h"
27#include "UObject/UnrealNames.h"
28#include "UObject/UnrealType.h"
30
31#if WITH_EDITOR
32#include "Styling/SlateColor.h"
33#endif
34
35#include "MovieSceneTrack.generated.h"
36
38class UObject;
44template<typename> struct TMovieSceneEvaluationTree;
45
48{
50 None = 0,
52 RemoveTrack = 1 << 0,
54 RemoveObject = 1 << 1,
56 RemoveSection = 1 << 2,
57};
59
60
61USTRUCT()
63{
65
67 : bCanEvaluateNearestSection(false)
68 , bEvalNearestSection(false)
69 , bEvaluateInPreroll(false)
70 , bEvaluateInPostroll(false)
71 , bEvaluateNearestSection_DEPRECATED(false)
72 {}
73
75 UPROPERTY()
76 uint32 bCanEvaluateNearestSection : 1;
77
79 UPROPERTY(EditAnywhere, Category="Track", DisplayName="Evaluate Nearest Section", meta=(EditCondition=bCanEvaluateNearestSection, HideEditConditionToggle))
80 uint32 bEvalNearestSection : 1;
81
83 UPROPERTY(EditAnywhere, Category="Track")
84 uint32 bEvaluateInPreroll : 1;
85
87 UPROPERTY(EditAnywhere, Category="Track")
88 uint32 bEvaluateInPostroll : 1;
89
90 UPROPERTY()
91 uint32 bEvaluateNearestSection_DEPRECATED : 1;
92};
93
94
96USTRUCT()
98{
100
102 : bShowVerticalFrames(false)
103 {}
104
106 UPROPERTY(EditAnywhere, Category = "Track")
107 uint32 bShowVerticalFrames : 1;
108};
109
123
124
126{
127 // Non-null if we are asking for a specific section.
129
130 FMovieSceneSupportsEasingParams() : ForSection(nullptr) {}
132};
133
144
145#if WITH_EDITOR
148{
150
152};
153
156{
158 None = 0,
161};
163
166{
167 class IMovieScenePlayer* Player = nullptr;
168 FGuid BindingID;
169 FMovieSceneSequenceID SequenceID;
170 bool bIsDimmed = false;
171};
172#endif
173
174/* Metadata tied to a track row. */
175USTRUCT()
177{
179
180 /* Optional dynamic conditions tied to specific track rows. */
181 UPROPERTY(EditAnywhere, Category="Track Row", meta=(ShowOnlyInnerProperties))
183};
184
185
186// Disable some VS warnings that are emitted by Add/RemoveSection functions hiding the
187// private virtual methods in IMovieSceneTrackVirtualAPI
188#if PLATFORM_COMPILER_CLANG
189 #pragma clang diagnostic push
190 #pragma clang diagnostic ignored "-Woverloaded-virtual"
191#elif PLATFORM_MICROSOFT
192 #pragma warning(push)
193 #pragma warning(disable:4263)
194 #pragma warning(disable:4264)
195#else
196 static_assert(false, "Unexpected compiler detected");
197#endif
198
202UCLASS(abstract, DefaultToInstanced, MinimalAPI, BlueprintType)
206{
208
209public:
210
213
214public:
215
217 UPROPERTY(EditAnywhere, Category = "Track", meta = (ShowOnlyInnerProperties))
219
220#if WITH_EDITORONLY_DATA
222 UPROPERTY(EditAnywhere, Category = "Track", meta = (ShowOnlyInnerProperties))
224#endif
225
227 UPROPERTY(EditAnywhere, Category = "Track")
229
233 FMovieSceneBlendTypeField GetSupportedBlendTypes() const
234 {
235 return SupportedBlendTypes;
236 }
237
242 MOVIESCENE_API virtual FMovieSceneTrackRowSegmentBlenderPtr GetRowSegmentBlender() const;
243
249
253 MOVIESCENE_API virtual void UpdateEasing();
254
255
256 void OnAddedToMovieScene(UMovieScene* MovieScene);
257 void OnRemovedFromMovieScene();
258
259protected:
260
261 //~ UObject interface
262 MOVIESCENE_API virtual void PostInitProperties() override;
263 MOVIESCENE_API virtual void PostLoad() override;
264 MOVIESCENE_API virtual bool IsPostLoadThreadSafe() const override;
265
266 MOVIESCENE_API virtual void OnDecorationAdded(UObject* NewDecoration) override;
267 MOVIESCENE_API virtual void OnDecorationRemoved(UObject* Decoration) override;
268
271
273 UPROPERTY()
274 bool bIsEvalDisabled;
275
277 UPROPERTY()
278 TArray<int32> RowsDisabled;
279
280#if WITH_EDITORONLY_DATA
281
285
289
290#endif
291
292public:
293
299
303 MOVIESCENE_API const FMovieSceneTrackEvaluationField& GetEvaluationField();
304
312 virtual int8 GetEvaluationFieldVersion() const { return 0; }
313
314 MOVIESCENE_API FGuid FindObjectBindingGuid() const;
315
316protected:
317
319 {
320 None,
321 Blended,
322 HighPass,
323 HighPassPerRow,
324 };
325
327
328protected:
329
331 MOVIESCENE_API void ForceUpdateEvaluationTree();
332
333private:
334
336 virtual bool PopulateEvaluationTree(TMovieSceneEvaluationTree<FMovieSceneTrackEvaluationData>& OutData) const
337 {
338 return false;
339 }
340
342 virtual void PreCompileImpl(FMovieSceneTrackPreCompileResult& OutPreCompileResult)
343 {
344 }
345
346 virtual void OnAddedToMovieSceneImpl(UMovieScene* InMovieScene)
347 {
348 }
349
350 virtual void OnRemovedFromMovieSceneImpl()
351 {
352 }
353
354private:
355
356 void UpdateEvaluationTree();
358 void AddSectionPrePostRollRangesToTree(TArrayView<UMovieSceneSection* const> Sections, TMovieSceneEvaluationTree<FMovieSceneTrackEvaluationData>& OutData);
359
361 UPROPERTY()
362 FGuid EvaluationFieldGuid;
363
364#if WITH_EDITORONLY_DATA
366 UPROPERTY()
368#endif
369
371 UPROPERTY()
372 FMovieSceneTrackEvaluationField EvaluationField;
373
374 /* Optional extra metadata tied to specific track rows. */
375 UPROPERTY()
376 TMap<int32, FMovieSceneTrackRowMetadata> TrackRowMetadata;
377
378public:
379
383 virtual FName GetTrackName() const { return NAME_None; }
384
388 virtual bool IsEmpty() const PURE_VIRTUAL(UMovieSceneTrack::IsEmpty, return true;);
389
393 virtual void RemoveAllAnimationData() { }
394
398 virtual bool SupportsMultipleRows() const
399 {
400 return SupportedBlendTypes.Num() != 0;
401 }
402
407
412
416 virtual UMovieSceneSection* GetSectionToKey() const { return nullptr; }
417
419 MOVIESCENE_API int32 GetMaxRowIndex() const;
420
425 MOVIESCENE_API virtual bool FixRowIndices();
426
428 MOVIESCENE_API virtual void OnRowIndicesChanged(const TMap<int32, int32>& NewToOldRowIndices);
429
433 MOVIESCENE_API bool IsEvalDisabled(const bool bInCheckLocal = true) const;
434 MOVIESCENE_API bool IsRowEvalDisabled(const int32 InRowIndex, const bool bInCheckLocal = true) const;
435
439 void SetEvalDisabled(const bool bInEvalDisabled) { bIsEvalDisabled = bInEvalDisabled; }
440 MOVIESCENE_API void SetRowEvalDisabled(const bool bInEvalDisabled, const int32 InRowIndex);
441
442#if WITH_EDITOR
443
447 bool IsLocalEvalDisabled() const { return bIsLocalEvalDisabled; }
449
455
456#endif
457
458 /*
459 * Returns a pointer to optional track row metadata at the given RowIndex, or nullptr if none exists.
460 */
461 MOVIESCENE_API const FMovieSceneTrackRowMetadata* FindTrackRowMetadata(int32 RowIndex) const;
462
463 /*
464 * Returns a pointer to optional track row metadata at the given RowIndex, or nullptr if none exists;
465 */
466 MOVIESCENE_API FMovieSceneTrackRowMetadata* FindTrackRowMetadata(int32 RowIndex);
467
468 /*
469 * Returns a pointer to optional track row metadata at the given RowIndex, or nullptr if none exists;
470 */
471 MOVIESCENE_API FMovieSceneTrackRowMetadata& FindOrAddTrackRowMetadata(int32 RowIndex);
472
473public:
474
475 /*
476 * Does this track support this section class type?
477
478 * @param ClassType The movie scene section class type
479 * @return Whether this track supports this section class type
480 */
482
483 // Parameter structs that only exist to differentiate overloads from IMovieSceneTrackVirtualAPI
494
500 MOVIESCENE_API void AddSection(FSectionParameter Section);
501
508
514 MOVIESCENE_API void RemoveSectionAt(FSectionIndexParameter SectionIndex);
515
516public:
522 virtual class UMovieSceneSection* CreateNewSection() PURE_VIRTUAL(UMovieSceneTrack::CreateNewSection, return nullptr;);
523
529 virtual const TArray<UMovieSceneSection*>& GetAllSections() const PURE_VIRTUAL(UMovieSceneTrack::GetAllSections, static TArray<UMovieSceneSection*> Empty; return Empty;);
530
537 virtual bool HasSection(const UMovieSceneSection& Section) const PURE_VIRTUAL(UMovieSceneTrack::HasSection, return false;);
538
539private:
540
541 virtual void OnSectionAddedImpl(UMovieSceneSection* Section)
542 {
543 }
544
545 virtual void OnSectionRemovedImpl(UMovieSceneSection* Section)
546 {
547 }
548
549public:
550
551#if WITH_EDITOR
552
558
562 MOVIESCENE_API virtual void RemoveForCook();
563
564 static bool RemoveMutedTracksOnCook();
565
566#endif
567
568#if WITH_EDITORONLY_DATA
569
575 virtual FText GetDisplayName() const PURE_VIRTUAL(UMovieSceneTrack::GetDisplayName, return FText::FromString(TEXT("Unnamed Track")););
576
582 virtual FText GetTrackRowDisplayName(int32 RowIndex) const { return FText::FromString(TEXT("Unnamed Track")); }
583
590
597
603 const FColor& GetColorTint() const
604 {
605 return TrackTint;
606 }
607
613 void SetColorTint(const FColor& InTrackTint)
614 {
616 }
617
621 int32 GetSortingOrder() const
622 {
623 return SortingOrder;
624 }
625
632 {
634 }
635
639 virtual bool SupportsDefaultSections() const
640 {
642 }
643
647 virtual bool SupportsConditions() const
648 {
649 return bSupportsConditions;
650 }
651
652 /*
653 * Returns an array of all conditions on track, track row, or section
654 */
656
657protected:
658
660 UPROPERTY()
661 FGuid ObjectBindingID;
662
664 UPROPERTY(EditAnywhere, Category="Track", DisplayName = Color)
666
668 UPROPERTY()
670
672 UPROPERTY()
674
676 UPROPERTY()
678
679public:
680#endif
681
682#if WITH_EDITOR
689 {
690 return EMovieSceneSectionMovedResult::None;
691 }
692
693 #endif
694};
695
696#if PLATFORM_COMPILER_CLANG
697 #pragma clang diagnostic pop
698#elif PLATFORM_MICROSOFT
699 #pragma warning(pop)
700#endif
virtual bool IsPostLoadThreadSafe() const override
#define PURE_VIRTUAL(func,...)
Definition CoreMiscDefines.h:103
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
#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
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
return true
Definition ExternalRpcRegistry.cpp:601
FMovieSceneTrackSegmentBlender * GetTrackSegmentBlender(const UMovieSceneTrack *Track, FMovieSceneTrackSegmentBlenderPtr &OutOwnerPtr)
Definition MovieSceneEvaluationTrack.cpp:53
EMovieSceneTrackEasingSupportFlags
Definition MovieSceneTrack.h:112
ECookOptimizationFlags
Definition MovieSceneTrack.h:48
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
#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 NameTypes.h:617
Definition UObjectGlobals.h:1292
Definition Text.h:385
static CORE_API FText FromString(const ANSICHAR *String)
Definition Text.cpp:1081
static CORE_API const FText & GetEmpty()
Definition Text.cpp:252
Definition IMovieScenePlayer.h:90
Definition IMovieSceneTrackVirtualAPI.h:12
Definition MovieScene.Build.cs:6
Definition ArrayView.h:139
Definition Array.h:670
Definition InlineValue.h:22
Definition UnrealString.h.inl:34
Definition SubclassOf.h:30
Definition MovieSceneDecorationContainer.h:110
Definition MovieSceneSection.h:243
MOVIESCENE_API FColor GetColorTint() const
Definition MovieSceneSection.cpp:882
MOVIESCENE_API void SetColorTint(const FColor &InColorTint)
Definition MovieSceneSection.cpp:872
Definition MovieSceneTrack.h:206
virtual class UMovieSceneSection * CreateNewSection() PURE_VIRTUAL(UMovieSceneTrack
Definition MovieSceneTrack.h:522
void SetEvalDisabled(const bool bInEvalDisabled)
Definition MovieSceneTrack.h:439
virtual bool SupportsMultipleRows() const
Definition MovieSceneTrack.h:398
virtual int8 GetEvaluationFieldVersion() const
Definition MovieSceneTrack.h:312
virtual UMovieSceneSection * GetSectionToKey() const
Definition MovieSceneTrack.h:416
virtual bool SupportsType(TSubclassOf< UMovieSceneSection > SectionClass) const PURE_VIRTUAL(UMovieSceneTrack
Definition MovieSceneTrack.h:481
ETreePopulationMode
Definition MovieSceneTrack.h:319
ETreePopulationMode BuiltInTreePopulationMode
Definition MovieSceneTrack.h:326
FMovieSceneBlendTypeField SupportedBlendTypes
Definition MovieSceneTrack.h:270
virtual EMovieSceneTrackEasingSupportFlags SupportsEasing(FMovieSceneSupportsEasingParams &Params) const
Definition MovieSceneTrack.h:403
~UMovieSceneTrack()
Definition MovieSceneTrack.h:212
virtual bool IsEmpty() const PURE_VIRTUAL(UMovieSceneTrack
Definition MovieSceneTrack.h:388
virtual void SetSectionToKey(UMovieSceneSection *InSection)
Definition MovieSceneTrack.h:411
Definition MovieScene.h:358
Definition Object.h:95
uint32 Type
Definition UnrealType.h:6835
@ false
Definition radaudio_common.h:23
Definition Color.h:486
Definition Guid.h:109
Definition MovieSceneBlendType.h:96
MOVIESCENE_API int32 Num() const
Definition MovieSceneBlendType.cpp:70
Definition MovieSceneCondition.h:74
Definition MovieSceneEvaluationField.h:109
Definition MovieSceneEvaluationTrack.h:55
Definition MovieSceneSequenceID.h:13
Definition MovieSceneTrack.h:126
const UMovieSceneSection * ForSection
Definition MovieSceneTrack.h:128
FMovieSceneSupportsEasingParams(const UMovieSceneSection *InSection)
Definition MovieSceneTrack.h:131
FMovieSceneSupportsEasingParams()
Definition MovieSceneTrack.h:130
Definition MovieSceneTrack.h:98
Definition MovieSceneTrack.h:63
Definition MovieSceneTrackEvaluationField.h:47
Definition MovieSceneTrack.h:136
FMovieSceneEvaluationFieldEntityMetaData DefaultMetaData
Definition MovieSceneTrack.h:142
Definition MovieSceneTrack.h:177
Definition MovieSceneSegmentCompiler.h:72
Definition MovieSceneSegmentCompiler.h:89
Definition SlateColor.h:42
static FSlateColor UseForeground()
Definition SlateColor.h:198
Definition IMovieSceneTemplateGenerator.h:21
Definition MovieSceneEvaluationTree.h:603
Definition MovieSceneTrack.h:490
FSectionIndexParameter(int32 InSectionIndex)
Definition MovieSceneTrack.h:491
int32 SectionIndex
Definition MovieSceneTrack.h:492
Definition MovieSceneTrack.h:485
UMovieSceneSection * Section
Definition MovieSceneTrack.h:487
FSectionParameter(UMovieSceneSection &InSection)
Definition MovieSceneTrack.h:486