UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AnimStreamable.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
8#pragma once
9
10#include "CoreMinimal.h"
12#include "UObject/Object.h"
13#include "Misc/Guid.h"
15#include "Animation/AnimTypes.h"
19#include "AnimStreamable.generated.h"
20
21class UAnimSequence;
22class UAnimCompress;
23struct FCompactPose;
24
26{
27public:
30 {
32 {
34 CompressedAnimSequence = nullptr;
35 }
36 }
37
38 float StartTime;
39
42
43 // Compressed Data for this chunk (if nullptr then data needs to be loaded via BulkData)
45
46 // Bulk data if stored in the package.
48
50 {
51 static const SIZE_T ClassSize = sizeof(FAnimStreamableChunk);
52 SIZE_T CurrentSize = ClassSize;
53
55 {
56 CurrentSize += CompressedAnimSequence->GetMemorySize();
57 }
58 return CurrentSize;
59 }
60
62 void Serialize(FArchive& Ar, UAnimStreamable* Owner, int32 ChunkIndex);
63};
64
66{
67public:
69
70 void Serialize(FArchive& Ar, class UAnimStreamable* Owner);
71
72 void Reset()
73 {
74 Chunks.Reset();
75 }
76
78 {
79 SIZE_T ChunkSize = 0;
80 for (const FAnimStreamableChunk& Chunk : Chunks)
81 {
82 ChunkSize += Chunk.GetMemorySize();
83 }
84 return sizeof(FStreamableAnimPlatformData) + ChunkSize;
85 }
86};
87
88
89UCLASS(config=Engine, hidecategories=UObject, MinimalAPI, BlueprintType)
91{
93
94public:
96 UPROPERTY(AssetRegistrySearchable)
97 int32 NumberOfKeys;
98
100 UPROPERTY(EditAnywhere, AssetRegistrySearchable, Category = Animation)
102
104 UPROPERTY(EditAnywhere, AssetRegistrySearchable, Category = Animation)
105 FName RetargetSource;
106
107 UPROPERTY()
108 FFrameRate SamplingFrameRate;
109
110#if WITH_EDITORONLY_DATA
111
112 // Sequence the streamable was created from (used for reflecting changes to the source in editor)
113 UPROPERTY()
115
116 UPROPERTY()
118
120 UE_DEPRECATED(5.0, "Num Frames is deprecated use NumberOfKeys instead")
121 UPROPERTY()
122 int32 NumFrames;
123
127 UPROPERTY()
129
134 UPROPERTY()
136
140 UPROPERTY()
142
143 // Editor can have multiple platforms loaded at once
145
146 FStreamableAnimPlatformData* RunningAnimPlatformData;
147#else
148
149 // Non editor only has one set of platform data
151#endif
152
154 {
155#if WITH_EDITOR
156 return RunningAnimPlatformData != nullptr;
157#else
158 return true;
159#endif
160 }
161
163 {
164#if WITH_EDITOR
165 check(RunningAnimPlatformData);
166 return *RunningAnimPlatformData;
167#else
168 return RunningAnimPlatformData;
169#endif
170 }
171
173 {
174#if WITH_EDITOR
175 check(RunningAnimPlatformData);
176 return *RunningAnimPlatformData;
177#else
178 return RunningAnimPlatformData;
179#endif
180 }
181
183 UPROPERTY(Category = Compression, EditAnywhere)
184 TObjectPtr<class UAnimBoneCompressionSettings> BoneCompressionSettings;
185
187 UPROPERTY(Category = Compression, EditAnywhere)
188 TObjectPtr<class UAnimCurveCompressionSettings> CurveCompressionSettings;
189
191 UPROPERTY(Category = Compression, EditAnywhere)
192 TObjectPtr<class UVariableFrameStrippingSettings> VariableFrameStrippingSettings;
193
195 UPROPERTY(EditAnywhere, AssetRegistrySearchable, Category = RootMotion, meta = (DisplayName = "EnableRootMotion"))
196 bool bEnableRootMotion;
197
199 UPROPERTY(EditAnywhere, Category = RootMotion)
200 TEnumAsByte<ERootMotionRootLock::Type> RootMotionRootLock;
201
203 UPROPERTY(EditAnywhere, Category = RootMotion)
204 bool bForceRootLock;
205
207 UPROPERTY(EditAnywhere, AssetRegistrySearchable, Category = RootMotion, meta = (DisplayName = "Use Normalized Root Motion Scale"))
208 bool bUseNormalizedRootMotionScale;
209
210 //~ Begin UObject Interface
211 virtual void PreSave(FObjectPreSaveContext ObjectSaveContext) override;
214 virtual void FinishDestroy() override;
216 //~ End UObject Interface
217
218 //~ Begin UAnimSequenceBase Interface
219 ENGINE_API virtual void HandleAssetPlayerTickedInternal(FAnimAssetTickContext &Context, const float PreviousTime, const float MoveDelta, const FAnimTickRecord &Instance, struct FAnimNotifyQueue& NotifyQueue) const override;
221 virtual int32 GetNumberOfSampledKeys() const override { return NumberOfKeys; }
222 //~ End UAnimSequenceBase Interface
223
224#if WITH_EDITOR
225 ENGINE_API void InitFrom(const UAnimSequence* InSourceSequence);
226#endif
227
228 ENGINE_API FStreamableAnimPlatformData& GetStreamingAnimPlatformData(const ITargetPlatform* Platform);
229
231
232 private:
233
234#if WITH_EDITOR
236
237 void UpdateRawData();
238
239 FString GetBaseDDCKey(uint32 NumChunks, const ITargetPlatform* TargetPlatform) const;
240
242 void RequestCompressedDataForChunk(const FString& ChunkDDCKey, FAnimStreamableChunk& Chunk, const int32 ChunkIndex, const uint32 FrameStart, const uint32 FrameEnd, TSharedRef<FAnimCompressContext> CompressContext, const ITargetPlatform* TargetPlatform);
244#endif
245
246 bool bUseRawDataOnly;
247 int32 GetChunkIndexForTime(const TArray<FAnimStreamableChunk>& Chunks, const float CurrentTime) const;
248};
249
EAnimInterpolationType
Definition AnimTypes.h:689
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
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 PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
@ Num
Definition MetalRHIPrivate.h:234
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Engine.Build.cs:7
Definition AnimStreamable.h:26
int32 NumFrames
Definition AnimStreamable.h:41
~FAnimStreamableChunk()
Definition AnimStreamable.h:29
SIZE_T GetMemorySize() const
Definition AnimStreamable.h:49
float StartTime
Definition AnimStreamable.h:38
FByteBulkData BulkData
Definition AnimStreamable.h:47
float SequenceLength
Definition AnimStreamable.h:40
FAnimStreamableChunk()
Definition AnimStreamable.h:28
FCompressedAnimSequence * CompressedAnimSequence
Definition AnimStreamable.h:44
Definition Archive.h:1208
Definition NameTypes.h:617
Definition ObjectSaveContext.h:244
Definition UnrealType.h:3087
Definition AnimStreamable.h:66
void Reset()
Definition AnimStreamable.h:72
SIZE_T GetMemorySize() const
Definition AnimStreamable.h:77
TArray< FAnimStreamableChunk > Chunks
Definition AnimStreamable.h:68
Definition Array.h:670
void Reset(SizeType NewSize=0)
Definition Array.h:2246
Definition EnumAsByte.h:22
Definition UnrealString.h.inl:34
Definition SharedPointer.h:153
Definition AnimBoneCompressionSettings.h:23
Definition AnimCompress.h:316
Definition AnimCurveCompressionSettings.h:18
Definition AnimSequenceBase.h:37
Definition AnimSequence.h:203
Definition AnimStreamable.h:91
FStreamableAnimPlatformData & GetRunningPlatformData()
Definition AnimStreamable.h:162
const FStreamableAnimPlatformData & GetRunningPlatformData() const
Definition AnimStreamable.h:172
bool HasRunningPlatformData() const
Definition AnimStreamable.h:153
FStreamableAnimPlatformData RunningAnimPlatformData
Definition AnimStreamable.h:150
ENGINE_API float GetChunkSizeSeconds(const ITargetPlatform *Platform) const
Definition Object.h:95
Definition VariableFrameStrippingSettings.h:17
Definition AnimEnums.h:12
Definition AnimationAsset.h:850
Definition AnimationAsset.h:267
Definition AnimNotifyQueue.h:161
Definition AnimationAsset.h:411
Definition AnimationPoseData.h:16
Definition BonePose.h:347
Definition AnimCompressionTypes.h:775
ENGINE_API SIZE_T GetMemorySize() const
Definition AnimCompressionTypes.cpp:1574
Definition FrameRate.h:21
Definition Guid.h:109
Definition AnimTypes.h:853
Definition ResourceSize.h:31
Definition AnimTypes.h:822
Definition ObjectPtr.h:488