UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AnimCompressionTypes.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "Misc/Guid.h"
8#include "Misc/MemStack.h"
12
14#include "HAL/ThreadSafeBool.h"
17#include "Misc/Paths.h"
19
22
25#include "BoneContainer.h"
26
27#if WITH_EDITOR
28#include "ReferenceSkeleton.h"
29#endif
30
31#include "AnimCompressionTypes.generated.h"
32
36UENUM()
44
45class FMemoryReader;
46class FMemoryWriter;
47
48class UAnimCompress;
52class USkeleton;
53struct FCompactPose;
55
56template<typename ArrayClass>
58{
60
62
66
72
79
85
87 {
88 OffsetData.AddUninitialized(NumOfTracks*StripSize);
89 }
90
92 {
94 }
95
97 {
98 return sizeof(int32)*OffsetData.Num() + sizeof(int32);
99 }
100
102 {
103 return OffsetData.Num() / StripSize;
104 }
105
106 bool IsValid() const
107 {
108 return (OffsetData.Num() > 0);
109 }
110};
111
115USTRUCT()
117{
119
120
121 float AverageError;
123 float MaxError;
125 float MaxErrorTime;
127 int32 MaxErrorBone;
128
130 : AverageError(0.f)
131 , MaxError(0.f)
132 , MaxErrorTime(0.f)
133 , MaxErrorBone(0)
134 {}
135};
136
138
139// Helper for buiilding DDC keys of settings
141{
142private:
143 TArray<uint8> TempBytes;
144
145public:
147
149 : Ar(TempBytes)
150 {
151 TempBytes.Reserve(64);
152 }
153
154 FString MakeString() const
155 {
156 FString Key;
157 const uint8* SettingsAsBytes = TempBytes.GetData();
158 Key.Reserve(TempBytes.Num() + 1);
159 for (int32 ByteIndex = 0; ByteIndex < TempBytes.Num(); ++ByteIndex)
160 {
161 ByteToHex(SettingsAsBytes[ByteIndex], Key);
162 }
163 return Key;
164 }
165};
166
168{
169};
170
172
173// Mechanism for cancelling in flight compression
175{
176private:
177 FThreadSafeBool Signal;
178
179public:
182
184 {
185 Signal = (bool)Other.Signal;
186 return *this;
187 }
188
189 void Cancel()
190 {
191 Signal = true;
192 }
193
194 bool IsCancelled() const
195 {
196 return Signal;
197 }
198};
199
200#if WITH_EDITOR
202{
203public:
205
207
209
212
213 TObjectPtr<UAnimCurveCompressionSettings> CurveCompressionSettings;
214
215 TObjectPtr<UAnimBoneCompressionSettings> BoneCompressionSettings;
216
217 // Data from USkeleton
220
222
224
226
227 EAnimInterpolationType Interpolation;
228
229 TArray<FBoneData> BoneData;
230
232
233 double SequenceLength;
234
237 UE_DEPRECATED(5.0, "NumberOfFrames has been replaced with NumberOfKeys and GetNumberOfFrames")
238 int32 NumberOfFrames;
239 int32 NumberOfKeys;
240
241 int32 GetNumberOfFrames() const { return FMath::Max(NumberOfKeys - 1, 1); }
242
243 EAdditiveAnimationType AdditiveType = AAT_None;
244 bool bIsValidAdditive;
245
247
248 //For Logging
249 FString Name;
250 FString FullName;
252
254
256
257 bool bShouldPerformStripping = false;
259 bool bDataFetched = false;
260
261 const ITargetPlatform* TargetPlatform = nullptr;
262
264 {
265 int64 Total = sizeof(FRawAnimSequenceTrack) * int64(AnimData.Num());
266 for (int32 i = 0; i < AnimData.Num(); ++i)
267 {
268 const FRawAnimSequenceTrack& RawTrack = AnimData[i];
269 Total +=
270 sizeof(FVector) * int64(RawTrack.PosKeys.Num()) +
271 sizeof(FQuat) * int64(RawTrack.RotKeys.Num()) +
272 sizeof(FVector) * int64(RawTrack.ScaleKeys.Num());
273 }
274
275 return Total;
276 }
277
279 {
281 }
282
284 {
285 int64 Total = 0;
286 for (const FFloatCurve& Curve : RawFloatCurves)
287 {
288 Total += sizeof(FFloatCurve);
289 Total += sizeof(FRichCurveKey) * int64(Curve.FloatCurve.Keys.Num());
290 }
291 return Total;
292 }
293
294 int64 GetApproxRawSize() const
295 {
297 }
298
299 uint64 GetApproxMemoryUsage() const
300 {
302 + TrackToSkeletonMapTable.GetAllocatedSize()
304 + BoneData.GetAllocatedSize();
305 return MemUsage;
306 }
307
309
310 ENGINE_API void Update(struct FCompressedAnimSequence& CompressedData) const;
311
312 void AddReferencedObjects(FReferenceCollector& Collector)
313 {
314 Collector.AddReferencedObject(BoneCompressionSettings);
315 Collector.AddReferencedObject(CurveCompressionSettings);
316 }
317
318 bool IsCancelled() const
319 {
320 return IsCancelledSignal.IsCancelled();
321 }
322
323protected:
326
327private:
329};
330
333
334#endif // WITH_EDITOR
335
336// Wrapper Code
337template <typename T>
339{
341};
342
343
344template <typename T>
349
350template <typename T>
355
356template <template <typename> class ContainerTypeMakerTemplate>
358{
368 typename ContainerTypeMakerTemplate<int32>::Type CompressedTrackOffsets;
369
381
382 typename ContainerTypeMakerTemplate<uint8>::Type CompressedByteStream;
383
391
393
398
399 template <template <typename> class OtherContainerMaker>
416
428};
429
431{
432 /* Common data */
434
435#if WITH_EDITORONLY_DATA
436 UE_DEPRECATED(5.0, "CompressedNumberOfFrames has been replaced with CompressedNumberOfKeys")
438
441#endif
442
446
447 /* Virtual interface codecs must implement */
449
450 UE_DEPRECATED(5.5, "SerializeCompressedData now accepts the DataOwner as an argument")
452
455
457 virtual FString GetDebugString() const { return FString(); }
458 virtual bool IsValid() const = 0;
459};
460
462{
465
467
468 // Give compression code a place to store some extra data during compression
469 // (Needed for PerTrackCompression)
471
474 , AnimData()
475 , Codec(nullptr)
476 , CompressionUserData(nullptr)
477 {}
478};
479
480template<typename T>
481TArrayView<T> RebaseTArrayView(const TArrayView<T>& ArrayView, const uint8* OriginalBase, const uint8* NewBase)
482{
483 if (ArrayView.GetData() != nullptr)
484 {
485 uint32 Offset = ArrayView.GetData() - OriginalBase;
486 T* NewData = (T*)(NewBase + Offset);
487 return TArrayView<T>(NewData, ArrayView.Num());
488 }
489 return ArrayView;
490}
491
503
504struct FUECompressedAnimData : public ICompressedAnimData, public FCompressedAnimDataBase<TNonConstArrayViewMaker>
505{
507
512
514
515 template<typename TArchive>
517
520
521 // ICompressedAnimData implementation
522 ENGINE_API virtual void SerializeCompressedData(class FArchive& Ar) override;
523 virtual void Bind(const TArrayView<uint8> BulkData) override { InitViewsFromBuffer(BulkData); }
524
526 ENGINE_API virtual FString GetDebugString() const override;
528};
529
531{
533}
534
535template<uint32 Alignment = DEFAULT_ALIGNMENT>
537{
538public:
540
541 enum { NeedsElementType = false };
542 enum { RequireRangeCheck = true };
543
545 {
546 public:
547
550 : Data(nullptr)
551 , MappedHandle(nullptr)
552 , MappedRegion(nullptr)
553 {}
554
561 {
562 checkSlow(this != &Other);
563
564 Reset();
565
566 Data = Other.Data;
567 Other.Data = nullptr;
568
569 MappedRegion = Other.MappedRegion;
570 Other.MappedRegion = nullptr;
571
572 MappedHandle = Other.MappedHandle;
573 Other.MappedHandle = nullptr;
574 }
575
578 {
579 Reset();
580 }
581
582 // FContainerAllocatorInterface
584 {
585 return Data;
586 }
588 SizeType CurrentNum,
590 SIZE_T NumBytesPerElement
591 )
592 {
593 if (MappedRegion || MappedHandle)
594 {
595 check(NewMax == 0); // Currently we can only support resizing of memory mapped regions to 0 size (ie delete)
596
597 delete MappedRegion;
598 delete MappedHandle;
599 MappedRegion = nullptr;
600 MappedHandle = nullptr;
601 Data = nullptr; // make sure we don't try to free this pointer
602 }
603 else if (Data || NewMax)
604 {
605 static_assert(sizeof(int32) <= sizeof(SIZE_T), "SIZE_T is expected to be larger than int32");
606
607 // Check for under/overflow
609 {
611 }
612
613 // Avoid calling FMemory::Realloc( nullptr, 0 ) as ANSI C mandates returning a valid pointer which is not what we want.
614 //checkSlow(((uint64)NewMax*(uint64)ElementTypeInfo.GetSize() < (uint64)INT_MAX));
615 Data = (FScriptContainerElement*)FMemory::Realloc(Data, NewMax*NumBytesPerElement, Alignment);
616 }
617 }
619 {
620 check(!MappedHandle && !MappedRegion); // this could be supported, but it probably is never what you want, so we will just assert.
621 return DefaultCalculateSlackReserve(NewMax, NumBytesPerElement, true, Alignment);
622 }
623 SizeType CalculateSlackShrink(SizeType NewMax, SizeType CurrentMax, SIZE_T NumBytesPerElement) const
624 {
625 check(!MappedHandle && !MappedRegion); // this could be supported, but it probably is never what you want, so we will just assert.
626 return DefaultCalculateSlackShrink(NewMax, CurrentMax, NumBytesPerElement, true, Alignment);
627 }
628 SizeType CalculateSlackGrow(SizeType NewMax, SizeType CurrentMax, SIZE_T NumBytesPerElement) const
629 {
630 check(!MappedHandle && !MappedRegion); // this could be supported, but it probably is never what you want, so we will just assert.
631 return DefaultCalculateSlackGrow(NewMax, CurrentMax, NumBytesPerElement, true, Alignment);
632 }
633
634 SIZE_T GetAllocatedSize(SizeType CurrentMax, SIZE_T NumBytesPerElement) const
635 {
636 return CurrentMax * NumBytesPerElement;
637 }
638
639 bool HasAllocation() const
640 {
641 return !!Data;
642 }
643
645 {
646 return 0;
647 }
648
650 {
651 check(!MappedHandle && !Data); // we could support stuff like this, but that usually isn't what we want for streamlined loading
652 Reset(); // just in case
654 {
655 MappedHandle = InMappedHandle;
656 MappedRegion = InMappedRegion;
657 Data = (FScriptContainerElement*)MappedRegion->GetMappedPtr(); //@todo mapped files should probably be const-correct
658 }
659 else
660 {
662 }
663 check(IsAligned(Data, alignof(FScriptContainerElement)));
664 }
665
666 bool IsMapped() const
667 {
668 return MappedRegion || MappedHandle;
669 }
670 private:
671
673 IMappedFileHandle* MappedHandle;
674 IMappedFileRegion* MappedRegion;
675
676 void Reset()
677 {
678 if (MappedRegion || MappedHandle)
679 {
680 delete MappedRegion;
681 delete MappedHandle;
682 MappedRegion = nullptr;
683 MappedHandle = nullptr;
684 Data = nullptr; // make sure we don't try to free this pointer
685 }
686 if (Data)
687 {
688 FMemory::Free(Data);
689 Data = nullptr;
690 }
691 }
692
693
695 ForAnyElementType& operator=(const ForAnyElementType&);
696 };
697
698 template<typename ElementType>
700 {
701 public:
702
706
707 ElementType* GetAllocation() const
708 {
709 return (ElementType*)ForAnyElementType::GetAllocation();
710 }
711 };
712};
713
714// Define the ResizeAllocation function with the regular alignment as exported to avoid bloat
716
717template<typename T, uint32 Alignment = DEFAULT_ALIGNMENT>
719{
720public:
722 {
723 }
728
730 {
731 this->ArrayNum = Num;
732 this->ArrayMax = Num;
733 this->AllocatorInstance.AcceptFileMapping(OwnedPtr->GetMappedHandle(), OwnedPtr->GetMappedRegion(), (void*)OwnedPtr->GetPointer());
734 OwnedPtr->RelinquishOwnership();
735 }
736};
737
738template<typename T, uint32 Alignment>
743
744USTRUCT()
746{
748
750
751 bool operator<(const FAnimCompressedCurveIndexedName& InOther) const
752 {
753 return InOther.CurveName.FastLess(CurveName);
754 }
755
757 {
758 Ar << Item.CurveName;
759 if(Ar.IsCountingMemory())
760 {
761 Ar << Item.CurveIndex;
762 }
763 return Ar;
764 }
765
766 // Name of the curve, used for sorting
767 UPROPERTY()
768 FName CurveName = NAME_None;
769
770 // Index into the compressed buffer
771 int32 CurveIndex = INDEX_NONE;
772};
773
775{
776public:
778
779
784 TArray<struct FTrackToSkeletonMap> CompressedTrackToSkeletonMapTable;
785
786 UE_DEPRECATED(5.3, "Please use IndexedCurveNames.")
787 TArray<struct FSmartName> CompressedCurveNames;
788
791
796#if WITH_EDITOR
797 TArray<uint8> CompressedByteStream;
799#else
801#endif
802
803 /* Compressed curve data stream used by AnimCurveCompressionCodec */
805
806 /* Compressed bone data stream used by AnimBoneCompressionCodec */
808
811
814
815 // The size of the raw data used to create the compressed data
817
818 //Temp debug DDC issues
819#if WITH_EDITOR
820 TArray<FRawAnimSequenceTrack> CompressedRawData; //Temp debug DDC issues
821 FName OwnerName;
822#endif
823
825 : BoneCompressionCodec(nullptr)
826 , CurveCompressionCodec(nullptr)
827 , CompressedRawDataSize(0)
828 {}
829
830 ENGINE_API void SerializeCompressedData(FArchive& Ar, bool bDDCData, UObject* DataOwner, USkeleton* Skeleton, UAnimBoneCompressionSettings* BoneCompressionSettings, UAnimCurveCompressionSettings* CurveCompressionSettings, bool bCanUseBulkData=true);
831
832 ENGINE_API void RebuildCurveIndexTable();
833
835 {
836 return CompressedTrackToSkeletonMapTable[TrackIndex].BoneTreeIndex;
837 }
838
840 {
841 return CompressedTrackToSkeletonMapTable.IndexOfByPredicate([BoneIndex](const FTrackToSkeletonMap& Entry) { return Entry.BoneTreeIndex == BoneIndex; });
842 }
843
844 // Return the number of bytes used
845 ENGINE_API SIZE_T GetMemorySize() const;
846
847 ENGINE_API void Reset();
848 ENGINE_API void ClearCompressedBoneData();
849 ENGINE_API void ClearCompressedCurveData();
850
851 ENGINE_API bool IsValid(const UAnimSequence* AnimSequence, bool bLogInformation=false) const;
852 ENGINE_API bool IsBoneDataValid(const UAnimSequence* AnimSequence, bool bLogInformation=false) const;
853 ENGINE_API bool IsCurveDataValid(const UAnimSequence* AnimSequence, bool bLogInformation=false) const;
854};
855
900
901#if WITH_EDITORONLY_DATA
902namespace UE::Anim::Compression {
903 struct FAnimDDCKeyArgs
904 {
905 ENGINE_API FAnimDDCKeyArgs(const UAnimSequenceBase& AnimSequence);
906 ENGINE_API FAnimDDCKeyArgs(const UAnimSequenceBase& AnimSequence, const ITargetPlatform* TargetPlatform);
907
908 const UAnimSequenceBase& AnimSequence;
909 const ITargetPlatform* TargetPlatform;
910 };
911
912 ENGINE_API FFrameRate GetCompressionFrameRate(const UAnimSequence& AnimSequence, const ITargetPlatform* TargetPlatform);
913}
914#endif // WITH_EDITORONLY_DATA
915
916UE_DEPRECATED(5.1, "Signature of DecompressPose has been deprecated, use UE::Anim::Decompression::DecompressPose instead")
918 const FCompressedAnimSequence& CompressedData,
921 float SequenceLength,
922 EAnimInterpolationType Interpolation,
923 bool bIsBakedAdditive,
924 const TArray<FTransform>& RetargetTransforms,
925 FName SourceName,
927
928UE_DEPRECATED(5.1, "Signature of DecompressPose has been deprecated, use UE::Anim::Decompression::DecompressPose instead")
929extern void DecompressPose( FCompactPose& OutPose,
930 const FCompressedAnimSequence& CompressedData,
932 USkeleton* SourceSkeleton,
933 float SequenceLength,
934 EAnimInterpolationType Interpolation,
935 bool bIsBakedAdditive,
936 FName RetargetSource,
937 FName SourceName,
939
940
941#if WITH_EDITOR
943#endif
constexpr bool IsAligned(T Val, uint64 Alignment)
Definition AlignmentTemplates.h:50
#define FORCENOINLINE
Definition AndroidPlatform.h:142
FArchive & operator<<(FArchive &Ar, FAnimationErrorStats &ErrorStats)
Definition AnimCompressionTypes.cpp:1671
TArrayView< T > RebaseTArrayView(const TArrayView< T > &ArrayView, const uint8 *OriginalBase, const uint8 *NewBase)
Definition AnimCompressionTypes.h:481
void DecompressPose(FCompactPose &OutPose, const FCompressedAnimSequence &CompressedData, const FAnimExtractContext &ExtractionContext, USkeleton *Skeleton, float SequenceLength, EAnimInterpolationType Interpolation, bool bIsBakedAdditive, const TArray< FTransform > &RetargetTransforms, FName SourceName, const FRootMotionReset &RootMotionReset)
Definition AnimCompressionTypes.cpp:1657
AnimationKeyFormat
Definition AnimCompressionTypes.h:38
@ AKF_ConstantKeyLerp
Definition AnimCompressionTypes.h:39
@ AKF_VariableKeyLerp
Definition AnimCompressionTypes.h:40
@ AKF_PerTrackCompression
Definition AnimCompressionTypes.h:41
@ AKF_MAX
Definition AnimCompressionTypes.h:42
AnimationCompressionFormat
Definition AnimEnums.h:70
@ ACF_Identity
Definition AnimEnums.h:77
EAnimInterpolationType
Definition AnimTypes.h:689
EAdditiveAnimationType
Definition AnimTypes.h:575
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
UE_FORCEINLINE_HINT SizeType DefaultCalculateSlackReserve(SizeType NewMax, SIZE_T BytesPerElement, bool bAllowQuantize, uint32 Alignment=DEFAULT_ALIGNMENT)
Definition ContainerAllocationPolicies.h:223
UE_FORCEINLINE_HINT SizeType DefaultCalculateSlackShrink(SizeType NewMax, SizeType CurrentMax, SIZE_T BytesPerElement, bool bAllowQuantize, uint32 Alignment=DEFAULT_ALIGNMENT)
Definition ContainerAllocationPolicies.h:139
UE_FORCEINLINE_HINT SizeType DefaultCalculateSlackGrow(SizeType NewMax, SizeType CurrentMax, SIZE_T BytesPerElement, bool bAllowQuantize, uint32 Alignment=DEFAULT_ALIGNMENT)
Definition ContainerAllocationPolicies.h:169
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_NONCOPYABLE(TypeName)
Definition CoreMiscDefines.h:457
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define UNLIKELY(x)
Definition Platform.h:857
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define FVector
Definition IOSSystemIncludes.h:8
@ Num
Definition MetalRHIPrivate.h:234
const bool
Definition NetworkReplayStreaming.h:178
#define MAX_int32
Definition NumericLimits.h:25
#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
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
void ByteToHex(uint8 In, FString &Result)
Definition UnrealString.h:94
uint32 Offset
Definition VulkanMemory.cpp:4033
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition AnimEncoding.h:122
Definition Archive.h:1208
UE_FORCEINLINE_HINT bool IsCountingMemory() const
Definition Archive.h:468
Definition MemoryReader.h:17
Definition MemoryWriter.h:101
Definition NameTypes.h:617
FORCEINLINE bool FastLess(const FName &Other) const
Definition NameTypes.h:815
Definition UnrealType.h:3087
Definition UObjectGlobals.h:2492
Definition ThreadSafeBool.h:17
Definition MappedFileHandle.h:115
Definition MappedFileHandle.h:17
const uint8 * GetMappedPtr()
Definition MappedFileHandle.h:53
Definition ArrayView.h:139
UE_FORCEINLINE_HINT constexpr ElementType * GetData() const
Definition ArrayView.h:295
UE_FORCEINLINE_HINT constexpr SizeType Num() const
Definition ArrayView.h:380
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
UE_NODEBUG UE_FORCEINLINE_HINT SIZE_T GetAllocatedSize(void) const
Definition Array.h:1059
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition AnimCompressionTypes.h:545
SizeType GetInitialCapacity() const
Definition AnimCompressionTypes.h:644
void ResizeAllocation(SizeType CurrentNum, SizeType NewMax, SIZE_T NumBytesPerElement)
Definition AnimCompressionTypes.h:587
bool HasAllocation() const
Definition AnimCompressionTypes.h:639
SizeType CalculateSlackReserve(SizeType NewMax, SIZE_T NumBytesPerElement) const
Definition AnimCompressionTypes.h:618
SizeType CalculateSlackGrow(SizeType NewMax, SizeType CurrentMax, SIZE_T NumBytesPerElement) const
Definition AnimCompressionTypes.h:628
bool IsMapped() const
Definition AnimCompressionTypes.h:666
ForAnyElementType()
Definition AnimCompressionTypes.h:549
void AcceptFileMapping(IMappedFileHandle *InMappedHandle, IMappedFileRegion *InMappedRegion, void *MallocPtr)
Definition AnimCompressionTypes.h:649
FScriptContainerElement * GetAllocation() const
Definition AnimCompressionTypes.h:583
SIZE_T GetAllocatedSize(SizeType CurrentMax, SIZE_T NumBytesPerElement) const
Definition AnimCompressionTypes.h:634
SizeType CalculateSlackShrink(SizeType NewMax, SizeType CurrentMax, SIZE_T NumBytesPerElement) const
Definition AnimCompressionTypes.h:623
~ForAnyElementType()
Definition AnimCompressionTypes.h:577
void MoveToEmpty(ForAnyElementType &Other)
Definition AnimCompressionTypes.h:560
Definition AnimCompressionTypes.h:700
ElementType * GetAllocation() const
Definition AnimCompressionTypes.h:707
ForElementType()
Definition AnimCompressionTypes.h:704
Definition AnimCompressionTypes.h:537
@ RequireRangeCheck
Definition AnimCompressionTypes.h:542
@ NeedsElementType
Definition AnimCompressionTypes.h:541
int32 SizeType
Definition AnimCompressionTypes.h:539
Definition AnimCompressionTypes.h:719
TMaybeMappedArray(TMaybeMappedArray &&)=default
TMaybeMappedArray()
Definition AnimCompressionTypes.h:721
void AcceptOwnedBulkDataPtr(FOwnedBulkDataPtr *OwnedPtr, int32 Num)
Definition AnimCompressionTypes.h:729
TMaybeMappedArray & operator=(const TMaybeMappedArray &)=default
TMaybeMappedArray & operator=(TMaybeMappedArray &&)=default
TMaybeMappedArray(const TMaybeMappedArray &)=default
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition UniquePtr.h:107
Definition AnimBoneCompressionCodec.h:27
Definition AnimBoneCompressionSettings.h:23
Definition AnimCompress.h:316
Definition AnimCurveCompressionSettings.h:18
Definition AnimSequenceBase.h:37
Definition AnimSequence.h:203
Definition Object.h:95
Definition Skeleton.h:295
Type
Definition AnimEnums.h:14
@ Zero
Definition AnimEnums.h:22
@ AnimFirstFrame
Definition AnimEnums.h:19
@ RefPose
Definition AnimEnums.h:16
Definition AnimSequence.h:43
Definition AnimCompressionTypes.h:531
ENGINE_API void OnInvalidMaybeMappedAllocatorNum(int32 NewNum, SIZE_T NumBytesPerElement)
Definition AnimCompressionTypes.cpp:1783
@ Curve
Definition Visu.h:19
Definition AdvancedWidgetsModule.cpp:13
Definition AnimCompressionTypes.h:746
friend FArchive & operator<<(FArchive &Ar, FAnimCompressedCurveIndexedName &Item)
Definition AnimCompressionTypes.h:756
FName CurveName
Definition AnimCompressionTypes.h:768
int32 CurveIndex
Definition AnimCompressionTypes.h:771
Definition AnimationAsset.h:267
Definition AnimCompressionTypes.h:117
Definition AnimCompressionTypes.h:141
FString MakeString() const
Definition AnimCompressionTypes.h:154
FMemoryWriter Ar
Definition AnimCompressionTypes.h:146
FArcToHexString()
Definition AnimCompressionTypes.h:148
Definition IAnimationDataModel.h:67
Definition BoneContainer.h:192
const TArray< FTransform > & GetRefPoseArray() const
Definition BoneContainer.h:361
Definition AnimCompressionTypes.h:175
void Cancel()
Definition AnimCompressionTypes.h:189
FCancelCompressionSignal(const FCancelCompressionSignal &)=default
bool IsCancelled() const
Definition AnimCompressionTypes.h:194
FCancelCompressionSignal()=default
FCancelCompressionSignal & operator=(const FCancelCompressionSignal &Other)
Definition AnimCompressionTypes.h:183
Definition BonePose.h:347
Definition AnimCompressionTypes.h:358
FCompressedAnimDataBase(FCompressedAnimDataBase< OtherContainerMaker > &InCompressedData)
Definition AnimCompressionTypes.h:400
AnimationCompressionFormat ScaleCompressionFormat
Definition AnimCompressionTypes.h:397
class AnimEncoding * RotationCodec
Definition AnimCompressionTypes.h:389
class AnimEncoding * TranslationCodec
Definition AnimCompressionTypes.h:388
AnimationCompressionFormat TranslationCompressionFormat
Definition AnimCompressionTypes.h:395
ContainerTypeMakerTemplate< uint8 >::Type CompressedByteStream
Definition AnimCompressionTypes.h:382
ContainerTypeMakerTemplate< int32 >::Type CompressedTrackOffsets
Definition AnimCompressionTypes.h:368
FCompressedAnimDataBase()
Definition AnimCompressionTypes.h:417
FCompressedOffsetDataBase< typename ContainerTypeMakerTemplate< int32 >::Type > CompressedScaleOffsets
Definition AnimCompressionTypes.h:380
AnimationCompressionFormat RotationCompressionFormat
Definition AnimCompressionTypes.h:396
enum AnimationKeyFormat KeyEncodingFormat
Definition AnimCompressionTypes.h:392
class AnimEncoding * ScaleCodec
Definition AnimCompressionTypes.h:390
Definition AnimCompressionTypes.h:775
TUniquePtr< ICompressedAnimData > CompressedDataStructure
Definition AnimCompressionTypes.h:807
FCompressedAnimSequence()
Definition AnimCompressionTypes.h:824
int32 GetTrackIndexFromSkeletonIndex(const int32 BoneIndex) const
Definition AnimCompressionTypes.h:839
TMaybeMappedArray< uint8 > CompressedByteStream
Definition AnimCompressionTypes.h:800
TObjectPtr< class UAnimCurveCompressionCodec > CurveCompressionCodec
Definition AnimCompressionTypes.h:813
int32 CompressedRawDataSize
Definition AnimCompressionTypes.h:816
TObjectPtr< class UAnimBoneCompressionCodec > BoneCompressionCodec
Definition AnimCompressionTypes.h:810
int32 GetSkeletonIndexFromTrackIndex(const int32 TrackIndex) const
Definition AnimCompressionTypes.h:834
TArray< uint8 > CompressedCurveByteStream
Definition AnimCompressionTypes.h:804
Definition AnimCompressionTypes.h:58
void AddUninitialized(int32 NumOfTracks)
Definition AnimCompressionTypes.h:86
const int32 GetOffsetData(int32 StripIndex, int32 Offset) const
Definition AnimCompressionTypes.h:73
ArrayClass OffsetData
Definition AnimCompressionTypes.h:59
int32 GetMemorySize() const
Definition AnimCompressionTypes.h:96
void SetStripSize(int32 InStripSize)
Definition AnimCompressionTypes.h:67
void Empty(int32 NumOfTracks=0)
Definition AnimCompressionTypes.h:91
bool IsValid() const
Definition AnimCompressionTypes.h:106
int32 StripSize
Definition AnimCompressionTypes.h:61
FCompressedOffsetDataBase(int32 InStripSize=2)
Definition AnimCompressionTypes.h:63
void SetOffsetData(int32 StripIndex, int32 Offset, int32 Value)
Definition AnimCompressionTypes.h:80
int32 GetNumTracks() const
Definition AnimCompressionTypes.h:101
Definition AnimCompressionTypes.h:168
Definition AnimCompressionTypes.h:462
UAnimBoneCompressionCodec * Codec
Definition AnimCompressionTypes.h:466
void * CompressionUserData
Definition AnimCompressionTypes.h:470
TUniquePtr< ICompressedAnimData > AnimData
Definition AnimCompressionTypes.h:464
FCompressibleAnimDataResult()
Definition AnimCompressionTypes.h:472
TArray< uint8 > CompressedByteStream
Definition AnimCompressionTypes.h:463
Definition AnimCurveTypes.h:214
Definition FrameRate.h:21
Definition Guid.h:109
static FORCENOINLINE CORE_API void Free(void *Original)
Definition UnrealMemory.cpp:685
Definition BulkData.h:216
Definition AnimTypes.h:853
Definition AnimCurveTypes.h:1070
Definition ReferenceSkeleton.h:100
Definition RichCurve.h:81
Definition AnimCompressionTypes.h:857
ERootMotionRootLock::Type RootMotionRootLock
Definition AnimCompressionTypes.h:870
bool bIsValidAdditive
Definition AnimCompressionTypes.h:876
FTransform AnimFirstFrame
Definition AnimCompressionTypes.h:868
bool bForceRootLock
Definition AnimCompressionTypes.h:874
void ResetRootBoneForRootMotion(FTransform &BoneTransform, const FBoneContainer &RequiredBones) const
Definition AnimCompressionTypes.h:895
bool bEnableRootMotion
Definition AnimCompressionTypes.h:872
void ResetRootBoneForRootMotion(FTransform &BoneTransform, const FTransform &RefPoseRootTransform) const
Definition AnimCompressionTypes.h:878
FRootMotionReset(bool bInEnableRootMotion, ERootMotionRootLock::Type InRootMotionRootLock, bool bInForceRootLock, FTransform InAnimFirstFrame, bool bInIsValidAdditive)
Definition AnimCompressionTypes.h:859
Definition ContainerAllocationPolicies.h:242
Definition SmartName.h:211
Definition AnimTypes.h:822
int32 BoneTreeIndex
Definition AnimTypes.h:827
Definition AnimCompressionTypes.h:493
virtual int64 GetApproxCompressedSize() const override
Definition AnimCompressionTypes.h:500
virtual bool IsValid() const override
Definition AnimCompressionTypes.h:501
virtual void Bind(const TArrayView< uint8 > BulkData)
Definition AnimCompressionTypes.h:499
ENGINE_API void BuildFinalBuffer(TArray< uint8 > &OutCompressedByteStream)
Definition AnimCompressionTypes.cpp:1228
Definition AnimCompressionTypes.h:505
virtual ENGINE_API void SerializeCompressedData(class FArchive &Ar) override
Definition AnimCompressionTypes.cpp:1148
virtual void Bind(const TArrayView< uint8 > BulkData) override
Definition AnimCompressionTypes.h:523
void ByteSwapOut(TArrayView< uint8 > CompressedData, FMemoryWriter &MemoryStream)
Definition AnimCompressionTypes.h:519
void ByteSwapIn(TArrayView< uint8 > CompressedData, FMemoryReader &MemoryStream)
Definition AnimCompressionTypes.h:518
virtual ENGINE_API FString GetDebugString() const override
Definition AnimCompressionTypes.cpp:1167
FUECompressedAnimData()=default
virtual int64 GetApproxCompressedSize() const override
Definition AnimCompressionTypes.h:525
virtual bool IsValid() const override
Definition AnimCompressionTypes.h:527
ENGINE_API void InitViewsFromBuffer(const TArrayView< uint8 > BulkData)
Definition AnimCompressionTypes.cpp:1093
FUECompressedAnimData(FUECompressedAnimDataMutable &InCompressedData)
Definition AnimCompressionTypes.h:508
void ByteSwapData(TArrayView< uint8 > CompresedData, TArchive &MemoryStream)
Definition AnimCompressionTypes.cpp:1203
Definition AnimCompressionTypes.h:431
virtual ~ICompressedAnimData()
Definition AnimCompressionTypes.h:448
int32 CompressedNumberOfKeys
Definition AnimCompressionTypes.h:433
virtual ENGINE_API void SerializeCompressedData(class FArchive &Ar)
Definition AnimCompressionTypes.cpp:1239
ICompressedAnimData()=default
ENGINE_API ICompressedAnimData & operator=(const ICompressedAnimData &)
virtual bool IsValid() const =0
virtual void Bind(const TArrayView< uint8 > BulkData)=0
virtual FString GetDebugString() const
Definition AnimCompressionTypes.h:457
ENGINE_API ICompressedAnimData(const ICompressedAnimData &)
virtual int64 GetApproxCompressedSize() const =0
Definition AnimCompressionTypes.h:339
Definition AnimCompressionTypes.h:352
Definition IsContiguousContainer.h:16
static constexpr bool Value
Definition IsContiguousContainer.h:20
Definition AnimCompressionTypes.h:346
Definition ObjectPtr.h:488
Definition WeakObjectPtrTemplates.h:25
void SetScale3D(const TVector< T > &NewScale3D)
Definition TransformNonVectorized.h:874
static CORE_API const TTransform< double > Identity
Definition TransformNonVectorized.h:58