UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AnimSequenceBase.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
10#include "CoreMinimal.h"
12#include "Animation/AnimTypes.h"
18
19#include "AnimSequenceBase.generated.h"
20
21UENUM()
28
31class UAnimDataModel;
34
35UCLASS(abstract, BlueprintType, MinimalAPI)
37{
39
40public:
42 UPROPERTY()
44
47 UE_DEPRECATED(5.0, "Public access to SequenceLength is deprecated, use GetPlayLength or UAnimDataController::SetPlayLength instead")
48 UPROPERTY(Category=Length, AssetRegistrySearchable, VisibleAnywhere, BlueprintReadOnly)
49 float SequenceLength;
50
54 UE_DEPRECATED(5.0, "Public access to RawCurveData is deprecated, see UAnimDataModel for source data or use GetCurveData for runtime instead")
55 UPROPERTY()
56 struct FRawCurveTracks RawCurveData;
57
58public:
60 UPROPERTY(EditAnywhere, Category=Animation)
61 float RateScale;
62
67 UPROPERTY(EditAnywhere, Category=Animation)
68 bool bLoop;
69#if WITH_EDITORONLY_DATA
70 // if you change Notifies array, this will need to be rebuilt
71 UPROPERTY()
73#endif // WITH_EDITORONLY_DATA
74
75 //~ Begin UObject Interface
76 ENGINE_API virtual void PostLoad() override;
77 ENGINE_API virtual bool IsPostLoadThreadSafe() const override;
78 ENGINE_API virtual void PostDuplicate(EDuplicateMode::Type DuplicateMode) override;
79#if WITH_EDITORONLY_DATA
81#endif
82 ENGINE_API virtual void GetResourceSizeEx(FResourceSizeEx& CumulativeResourceSize) override;
83 //~ End UObject Interface
84
86 ENGINE_API virtual float GetPlayLength() const override;
87
89 ENGINE_API void SortNotifies();
90
92 ENGINE_API bool RemoveNotifies(const TArray<FName>& NotifiesToRemove);
93
95 ENGINE_API void RemoveNotifies();
96
97#if WITH_EDITOR
100#endif
101
108 ENGINE_API void GetAnimNotifies(const float& StartTime, const float& DeltaTime, FAnimNotifyContext& NotifyContext) const;
109
116 ENGINE_API virtual void GetAnimNotifiesFromDeltaPositions(const float& PreviousPosition, const float & CurrentPosition, FAnimNotifyContext& NotifyContext) const;
117
119 UE_DEPRECATED(5.6, "Please use EvaluateCurveData with FAnimExtractContext")
120 virtual void EvaluateCurveData(FBlendedCurve& OutCurve, float CurrentTime, bool bForceUseRawData = false) const { const FAnimExtractContext Context(static_cast<double>(CurrentTime)); EvaluateCurveData(OutCurve, Context, bForceUseRawData); }
121 ENGINE_API virtual void EvaluateCurveData(FBlendedCurve& OutCurve, const FAnimExtractContext& AnimExtractContext, bool bForceUseRawData = false) const;
122
123 UE_DEPRECATED(5.6, "Please use EvaluateCurveData with FAnimExtractContext")
124 virtual float EvaluateCurveData(FName CurveName, float CurrentTime, bool bForceUseRawData = false) const { const FAnimExtractContext Context(static_cast<double>(CurrentTime)); return EvaluateCurveData(CurveName, Context, bForceUseRawData); }
125 ENGINE_API virtual float EvaluateCurveData(FName CurveName, const FAnimExtractContext& AnimExtractContext, bool bForceUseRawData = false) const;
126
127 ENGINE_API virtual const FRawCurveTracks& GetCurveData() const;
128
129 ENGINE_API virtual bool HasCurveData(FName CurveName, bool bForceUseRawData = false) const;
130
132 ENGINE_API virtual int32 GetNumberOfSampledKeys() const;
133
135 ENGINE_API virtual FFrameRate GetSamplingFrameRate() const;
136
138 ENGINE_API virtual float GetTimeAtFrame(const int32 Frame) const;
139
140#if WITH_EDITOR
142 ENGINE_API virtual int32 GetFrameAtTime(const float Time) const;
143
144 // @todo document
146
149
152
153 ENGINE_API virtual void GetAssetRegistryTags(FAssetRegistryTagsContext Context) const override;
154 UE_DEPRECATED(5.4, "Implement the version that takes FAssetRegistryTagsContext instead.")
155 ENGINE_API virtual void GetAssetRegistryTags(TArray<FAssetRegistryTag>& OutTags) const override;
156
157 // Get a pointer to the data for a given Anim Notify
158 ENGINE_API uint8* FindNotifyPropertyData(int32 NotifyIndex, FArrayProperty*& ArrayProperty);
159
160 // Get a pointer to the data for a given array property item
161 ENGINE_API uint8* FindArrayProperty(const TCHAR* PropName, FArrayProperty*& ArrayProperty, int32 ArrayIndex);
162
165#endif //WITH_EDITORONLY_DATA
166public:
167 // update cache data (notify tracks, sync markers)
168 ENGINE_API virtual void RefreshCacheData();
169
170 //~ Begin UAnimationAsset Interface
171 ENGINE_API virtual void TickAssetPlayer(FAnimTickRecord& Instance, struct FAnimNotifyQueue& NotifyQueue, FAnimAssetTickContext& Context) const override;
172 //~ End UAnimationAsset Interface
173
174 ENGINE_API void TickByMarkerAsFollower(FMarkerTickRecord &Instance, FMarkerTickContext &MarkerContext, float& CurrentTime, float& OutPreviousTime, const float MoveDelta, const bool bLooping, const UMirrorDataTable* MirrorTable = nullptr) const;
175 ENGINE_API void TickByMarkerAsLeader(FMarkerTickRecord& Instance, FMarkerTickContext& MarkerContext, float& CurrentTime, float& OutPreviousTime, const float MoveDelta, const bool bLooping, const UMirrorDataTable* MirrorTable = nullptr) const;
176
185 virtual void GetAnimationPose(FAnimationPoseData& OutPoseData, const FAnimExtractContext& ExtractionContext) const
186 PURE_VIRTUAL(UAnimSequenceBase::GetAnimationPose, );
187
188 ENGINE_API virtual void HandleAssetPlayerTickedInternal(FAnimAssetTickContext &Context, const float PreviousTime, const float MoveDelta, const FAnimTickRecord &Instance, struct FAnimNotifyQueue& NotifyQueue) const;
189
190 virtual bool HasRootMotion() const { return false; }
191
192 UE_DEPRECATED(5.6, "Please use ExtractRootMotion with FAnimExtractContext")
193 virtual FTransform ExtractRootMotion(float StartTime, float DeltaTime, bool bAllowLooping) const { const FAnimExtractContext Context(static_cast<double>(StartTime), true, FDeltaTimeRecord(DeltaTime), bAllowLooping); return ExtractRootMotion(Context); }
194
195 // Extract Root Motion transform from the animation
197
198 UE_DEPRECATED(5.6, "Please use ExtractRootMotionFromRange with FAnimExtractContext")
200
201 // Extract Root Motion transform from a contiguous position range (no looping)
202 virtual FTransform ExtractRootMotionFromRange(double StartTime, double EndTime, const FAnimExtractContext& ExtractionContext) const { return {}; }
203
204 UE_DEPRECATED(5.6, "Please use ExtractRootTrackTransform with FAnimExtractContext")
205 virtual FTransform ExtractRootTrackTransform(float Time, const FBoneContainer* RequiredBones) const { const FAnimExtractContext Context(static_cast<double>(Time)); return ExtractRootTrackTransform(Context, RequiredBones); }
206
207 // Extract the transform from the root track for the given animation position
208 virtual FTransform ExtractRootTrackTransform(const FAnimExtractContext& ExtractionContext, const FBoneContainer* RequiredBones) const { return {}; }
209
210 ENGINE_API virtual void Serialize(FArchive& Ar) override;
211
212 virtual void AdvanceMarkerPhaseAsLeader(bool bLooping, float MoveDelta, const TArray<FName>& ValidMarkerNames, float& CurrentTime, FMarkerPair& PrevMarker, FMarkerPair& NextMarker, TArray<FPassedMarker>& MarkersPassed, const UMirrorDataTable* MirrorTable) const { check(false); /*Should never call this (either missing override or calling on unsupported asset */ }
213
214 virtual void AdvanceMarkerPhaseAsFollower(const FMarkerTickContext& Context, float DeltaRemaining, bool bLooping, float& CurrentTime, FMarkerPair& PreviousMarker, FMarkerPair& NextMarker, const UMirrorDataTable* MirrorTable) const { check(false); /*Should never call this (either missing override or calling on unsupported asset */ }
215
216 virtual void GetMarkerIndicesForTime(float CurrentTime, bool bLooping, const TArray<FName>& ValidMarkerNames, FMarkerPair& OutPrevMarker, FMarkerPair& OutNextMarker) const { check(false); /*Should never call this (either missing override or calling on unsupported asset */ }
217
218 virtual FMarkerSyncAnimPosition GetMarkerSyncPositionFromMarkerIndicies(int32 PrevMarker, int32 NextMarker, float CurrentTime, const UMirrorDataTable* MirrorTable) const { check(false); return FMarkerSyncAnimPosition(); /*Should never call this (either missing override or calling on unsupported asset */ }
219
220 virtual void GetMarkerIndicesForPosition(const FMarkerSyncAnimPosition& SyncPosition, bool bLooping, FMarkerPair& OutPrevMarker, FMarkerPair& OutNextMarker, float& CurrentTime, const UMirrorDataTable* MirrorTable ) const { check(false); /*Should never call this (either missing override or calling on unsupported asset */ }
221
225
226 // default implementation, no additive
228 virtual bool CanBeUsedInComposition() const { return true; }
229
230 // to support anim sequence base to montage
232 virtual bool GetEnableRootMotionSettingFromMontage() const { return false; }
233
234#if WITH_EDITOR
235private:
238
239public:
240 typedef FOnNotifyChangedMulticaster::FDelegate FOnNotifyChanged;
241
245 virtual bool IsValidToPlay() const { return true; }
246 // ideally this would be animsequcnebase, but we might have some issue with that. For now, just allow AnimSequence
247 virtual class UAnimSequence* GetAdditiveBasePose() const { return nullptr; }
248#endif
249
250 // return true if anim notify is available
251 ENGINE_API virtual bool IsNotifyAvailable() const;
252
253#if WITH_EDITOR
255 ENGINE_API virtual void OnAnimModelLoaded();
256public:
259
262
264 ENGINE_API IAnimationDataController& GetController();
265protected:
267 ENGINE_API virtual void PopulateModel();
268 ENGINE_API virtual void PopulateWithExistingModel(TScriptInterface<IAnimationDataModel> ExistingDataModel);
269
272
274 ENGINE_API void ValidateModel() const;
275
278
281private:
283 ENGINE_API void CreateModel();
284
285public:
287 bool IsDataModelValid() const
288 {
290 {
291 return DataModelInterface != nullptr;
292 }
293
294 return false;
295 }
296#endif // WITH_EDITOR
297
298#if WITH_EDITORONLY_DATA
299protected:
300 UE_DEPRECATED(5.1, "DataModel has been converted to DataModelInterface")
301 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Animation Model")
302 TObjectPtr<UAnimDataModel> DataModel;
303
305 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Animation Model")
307
310
312 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Transient, DuplicateTransient, Category = "Animation Model")
314
317#endif // WITH_EDITORONLY_DATA
318
319};
EAnimDataModelNotifyType
Definition AnimDataNotifications.h:20
ETypeAdvanceAnim
Definition AnimSequenceBase.h:23
@ ETAA_Looped
Definition AnimSequenceBase.h:26
@ ETAA_Default
Definition AnimSequenceBase.h:24
@ ETAA_Finished
Definition AnimSequenceBase.h:25
EAdditiveAnimationType
Definition AnimTypes.h:575
#define check(expr)
Definition AssertionMacros.h:314
virtual bool IsPostLoadThreadSafe() const override
#define PURE_VIRTUAL(func,...)
Definition CoreMiscDefines.h:103
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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 DECLARE_MULTICAST_DELEGATE(DelegateName)
Definition DelegateCombinations.h:23
void * FDelegateUserObject
Definition IDelegateInstance.h:107
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
const char * source
Definition lz4.h:711
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Archive.h:1208
Definition UnrealType.h:3702
Definition AssetRegistryTagsContext.h:98
Definition AnimationAsset.h:513
Definition NameTypes.h:617
Definition UnrealType.h:3087
Definition IAnimationDataController.h:50
Definition IAnimationDataModel.h:127
virtual const FAnimationCurveData & GetCurveData() const =0
virtual double GetPlayLength() const =0
Definition Array.h:670
Definition ScriptInterface.h:139
Definition AnimDataModel.h:18
Definition AnimSequenceBase.h:37
virtual float GetNextMatchingPosFromMarkerSyncPos(const FMarkerSyncAnimPosition &InMarkerSyncGroupPosition, const float &StartingPosition) const
Definition AnimSequenceBase.h:223
virtual void GetMarkerIndicesForTime(float CurrentTime, bool bLooping, const TArray< FName > &ValidMarkerNames, FMarkerPair &OutPrevMarker, FMarkerPair &OutNextMarker) const
Definition AnimSequenceBase.h:216
virtual float EvaluateCurveData(FName CurveName, float CurrentTime, bool bForceUseRawData=false) const
Definition AnimSequenceBase.h:124
virtual EAdditiveAnimationType GetAdditiveAnimType() const
Definition AnimSequenceBase.h:227
virtual ENGINE_API bool IsNotifyAvailable() const
Definition AnimSequenceBase.cpp:378
virtual float GetPrevMatchingPosFromMarkerSyncPos(const FMarkerSyncAnimPosition &InMarkerSyncGroupPosition, const float &StartingPosition) const
Definition AnimSequenceBase.h:224
virtual FTransform ExtractRootMotionFromRange(float StartTrackPosition, float EndTrackPosition) const
Definition AnimSequenceBase.h:199
virtual FMarkerSyncAnimPosition GetMarkerSyncPositionFromMarkerIndicies(int32 PrevMarker, int32 NextMarker, float CurrentTime, const UMirrorDataTable *MirrorTable) const
Definition AnimSequenceBase.h:218
virtual FTransform ExtractRootTrackTransform(float Time, const FBoneContainer *RequiredBones) const
Definition AnimSequenceBase.h:205
virtual bool HasRootMotion() const
Definition AnimSequenceBase.h:190
virtual FTransform ExtractRootMotion(const FAnimExtractContext &ExtractionContext) const
Definition AnimSequenceBase.h:196
virtual void EnableRootMotionSettingFromMontage(bool bInEnableRootMotion, const ERootMotionRootLock::Type InRootMotionRootLock)
Definition AnimSequenceBase.h:231
virtual float GetFirstMatchingPosFromMarkerSyncPos(const FMarkerSyncAnimPosition &InMarkerSyncGroupPosition) const
Definition AnimSequenceBase.h:222
virtual FTransform ExtractRootTrackTransform(const FAnimExtractContext &ExtractionContext, const FBoneContainer *RequiredBones) const
Definition AnimSequenceBase.h:208
virtual bool CanBeUsedInComposition() const
Definition AnimSequenceBase.h:228
virtual void GetAnimationPose(FAnimationPoseData &OutPoseData, const FAnimExtractContext &ExtractionContext) const PURE_VIRTUAL(UAnimSequenceBase virtual ENGINE_API void HandleAssetPlayerTickedInternal(FAnimAssetTickContext &Context, const float PreviousTime, const float MoveDelta, const FAnimTickRecord &Instance, struct FAnimNotifyQueue &NotifyQueue) const
Definition AnimSequenceBase.h:188
virtual void GetMarkerIndicesForPosition(const FMarkerSyncAnimPosition &SyncPosition, bool bLooping, FMarkerPair &OutPrevMarker, FMarkerPair &OutNextMarker, float &CurrentTime, const UMirrorDataTable *MirrorTable) const
Definition AnimSequenceBase.h:220
virtual void AdvanceMarkerPhaseAsLeader(bool bLooping, float MoveDelta, const TArray< FName > &ValidMarkerNames, float &CurrentTime, FMarkerPair &PrevMarker, FMarkerPair &NextMarker, TArray< FPassedMarker > &MarkersPassed, const UMirrorDataTable *MirrorTable) const
Definition AnimSequenceBase.h:212
virtual FTransform ExtractRootMotion(float StartTime, float DeltaTime, bool bAllowLooping) const
Definition AnimSequenceBase.h:193
virtual void AdvanceMarkerPhaseAsFollower(const FMarkerTickContext &Context, float DeltaRemaining, bool bLooping, float &CurrentTime, FMarkerPair &PreviousMarker, FMarkerPair &NextMarker, const UMirrorDataTable *MirrorTable) const
Definition AnimSequenceBase.h:214
virtual void EvaluateCurveData(FBlendedCurve &OutCurve, float CurrentTime, bool bForceUseRawData=false) const
Definition AnimSequenceBase.h:120
virtual FTransform ExtractRootMotionFromRange(double StartTime, double EndTime, const FAnimExtractContext &ExtractionContext) const
Definition AnimSequenceBase.h:202
virtual bool GetEnableRootMotionSettingFromMontage() const
Definition AnimSequenceBase.h:232
Definition AnimSequence.h:203
ENGINE_API void GetAdditiveBasePose(FAnimationPoseData &OutAnimationPoseData, const FAnimExtractContext &ExtractionContext) const
Definition AnimSequence.cpp:1917
Definition AnimationAsset.h:1020
Definition Class.h:3793
Definition MirrorDataTable.h:102
Type
Definition AnimTypes.h:38
Type
Definition UObjectGlobals.h:128
Type
Definition AnimEnums.h:14
Definition AdvancedWidgetsModule.cpp:13
@ false
Definition radaudio_common.h:23
Definition AnimationAsset.h:850
Definition AnimDataNotifications.h:251
Definition AnimationAsset.h:267
Definition AnimNotifyQueue.h:149
Definition AnimTypes.h:277
Definition AnimNotifyQueue.h:161
Definition AnimTypes.h:544
Definition AnimationAsset.h:411
Definition AnimationPoseData.h:16
Definition AnimCurveTypes.h:1041
Definition BoneContainer.h:192
Definition AnimationAsset.h:98
Definition UObjectGlobals.h:3224
Definition FrameRate.h:21
Definition AnimationAsset.h:56
Definition AnimationAsset.h:361
Definition AnimationAsset.h:67
Definition AnimCurveTypes.h:1070
Definition ResourceSize.h:31
Definition ObjectPtr.h:488