UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AnimTypes.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/MemStack.h"
8#include "Algo/Transform.h"
10#include "Animation/AnimEnums.h"
11#include "Misc/SecureHash.h"
14#include "AnimTypes.generated.h"
15
16struct FMarkerPair;
18struct FPassedMarker;
19
20class FMemoryReader;
21class FMemoryWriter;
23
24// Disable debugging information for shipping and test builds.
25#define ENABLE_ANIM_DEBUG (1 && !(UE_BUILD_SHIPPING || UE_BUILD_TEST))
26
27#define DEFAULT_SAMPLERATE 30.f
28#define MINIMUM_ANIMATION_LENGTH (1/DEFAULT_SAMPLERATE)
29
30// Enable this if you want to locally measure detailed anim perf. Disabled by default as it is introduces a lot of additional profile markers and associated overhead.
31#define ENABLE_VERBOSE_ANIM_PERF_TRACKING 0
32
33#define MAX_ANIMATION_TRACKS 65535
34
44
46
48UENUM()
50{
51 BA_X UMETA(DisplayName = "X Axis"),
52 BA_Y UMETA(DisplayName = "Y Axis"),
53 BA_Z UMETA(DisplayName = "Z Axis"),
54};
55
56
58UENUM(BlueprintType)
60{
62 BCS_WorldSpace UMETA(DisplayName = "World Space"),
64 BCS_ComponentSpace UMETA(DisplayName = "Component Space"),
66 BCS_ParentBoneSpace UMETA(DisplayName = "Parent Bone Space"),
68 BCS_BoneSpace UMETA(DisplayName = "Bone Space"),
70};
71
73UENUM()
75{
77 BRS_KeepComponentSpaceRotation UMETA(DisplayName = "No Change (Preserve Existing Component Space Rotation)"),
79 BRS_KeepLocalSpaceRotation UMETA(DisplayName = "Maintain Local Rotation Relative to Parent"),
81 BRS_CopyFromTarget UMETA(DisplayName = "Copy Target Rotation"),
82};
83
85UENUM()
87{
88 enum Type : int
89 {
94 };
95}
96
98UENUM()
100{
101 enum Type : int
102 {
105
108 };
109}
110
111USTRUCT(BlueprintType)
113{
115
116
117 UPROPERTY()
118 int32 SourceIndex;
119
120 UPROPERTY()
121 float BlendWeight;
122
124 : SourceIndex(0)
125 , BlendWeight(0.0f)
126 {
127 }
128};
129
130USTRUCT(BlueprintType)
142
144{
145private:
146 // Number of the last external frame where we updated the counter (total global frame count)
147 uint64 LastSyncronizedFrame;
148
149 // Number of counter increments since last reset
150 int16 Counter;
151
152 // Number of external frames that URO is currently scheduled to skip
153 int16 SkipFrames;
154
155public:
156
158 : LastSyncronizedFrame(INDEX_NONE)
159 , Counter(INDEX_NONE)
160 , SkipFrames(0)
161
162 {}
163
164 int16 Get() const
165 {
166 return Counter;
167 }
168
170 {
171 return (Counter != INDEX_NONE) && (LastSyncronizedFrame != INDEX_NONE);
172 }
173
176 {
177 Counter++;
178 LastSyncronizedFrame = GFrameCounter;
179
180 // Avoid wrapping over back to INDEX_NONE, as this means 'never been traversed'
181 if (Counter == INDEX_NONE)
182 {
183 Counter++;
184 }
185 }
186
192
195 {
196 return SkipFrames;
197 }
198
200 void Reset()
201 {
202 Counter = INDEX_NONE;
203 LastSyncronizedFrame = INDEX_NONE;
204 SkipFrames = 0;
205 }
206
209 {
210 Counter = InMasterCounter.Counter;
211 LastSyncronizedFrame = InMasterCounter.LastSyncronizedFrame;
212 SkipFrames = InMasterCounter.SkipFrames;
213 }
214
217 {
218 return HasEverBeenUpdated() && Counter == InOtherCounter.Counter;
219 }
220
223 {
224 return HasEverBeenUpdated() && LastSyncronizedFrame == InOtherCounter.LastSyncronizedFrame;
225 }
226
229 {
230 return HasEverBeenUpdated() && Counter == InOtherCounter.Counter && LastSyncronizedFrame == InOtherCounter.LastSyncronizedFrame;
231 }
232
235 {
236 // Test if we're currently in sync with our master counter
238 {
239 return true;
240 }
241
242 // If not, test if the Master Counter is a frame ahead of us
244 TestCounter.Increment();
245
246 return TestCounter.IsSynchronized_Counter(InOtherCounter);
247 }
248
259 {
260 // Test if we're currently in sync with our master counter
262 {
263 return true;
264 }
265
266 // If we aren't synced then check if we were synced last frame
267 return LastSyncronizedFrame >= (GFrameCounter - SkipFrames) - 1;
268 }
269};
270
275USTRUCT(BlueprintType)
277{
279
280#if WITH_EDITORONLY_DATA
282 UPROPERTY()
284#endif
285
287 UPROPERTY()
288 float TriggerTimeOffset;
289
291 UPROPERTY()
292 float EndTriggerTimeOffset;
293
294 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=AnimNotifyEvent)
295 float TriggerWeightThreshold;
296
297 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=AnimNotifyEvent)
299
300 UPROPERTY(EditAnywhere, Instanced, BlueprintReadWrite, Category=AnimNotifyEvent)
301 TObjectPtr<class UAnimNotify> Notify;
302
303 UPROPERTY(EditAnywhere, Instanced, BlueprintReadWrite, Category=AnimNotifyEvent)
304 TObjectPtr<class UAnimNotifyState> NotifyStateClass;
305
306 UPROPERTY()
307 float Duration;
308
310 UPROPERTY()
312
314 UPROPERTY()
315 bool bConvertedFromBranchingPoint;
316
317 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=AnimNotifyEvent)
318 TEnumAsByte<EMontageNotifyTickType::Type> MontageTickType;
319
321 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AnimNotifyTriggerSettings, meta = (ClampMin = "0.0", ClampMax = "1.0"))
322 float NotifyTriggerChance;
323
325 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AnimNotifyTriggerSettings)
326 TEnumAsByte<ENotifyFilterType::Type> NotifyFilterType;
327
329 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AnimNotifyTriggerSettings, meta = (ClampMin = "0"))
330 int32 NotifyFilterLOD;
331
333 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AnimNotifyTriggerSettings)
334 bool bCanBeFilteredViaRequest;
335
337 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AnimNotifyTriggerSettings)
338 bool bTriggerOnDedicatedServer;
339
341 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = AnimNotifyTriggerSettings)
342 bool bTriggerOnFollower;
343
344#if WITH_EDITORONLY_DATA
346 UPROPERTY()
348
350 UPROPERTY(meta = (ExcludeFromHash))
351 FGuid Guid;
352#endif // WITH_EDITORONLY_DATA
353
355 UPROPERTY()
356 int32 TrackIndex;
357
358private:
360 mutable FName CachedNotifyEventName;
361
363 mutable FName CachedNotifyEventBaseName;
364
365public:
368#if WITH_EDITORONLY_DATA
370#endif
371 , TriggerTimeOffset(0)
372 , EndTriggerTimeOffset(0)
373 , TriggerWeightThreshold(ZERO_ANIMWEIGHT_THRESH)
374 , Notify(nullptr)
375 , NotifyStateClass(nullptr)
376 , Duration(0)
377 , bConvertedFromBranchingPoint(false)
378 , MontageTickType(EMontageNotifyTickType::Queued)
379 , NotifyTriggerChance(1.f)
380 , NotifyFilterType(ENotifyFilterType::NoFiltering)
381 , NotifyFilterLOD(0)
382 , bCanBeFilteredViaRequest(true)
383 , bTriggerOnDedicatedServer(true)
384 , bTriggerOnFollower(false)
385#if WITH_EDITORONLY_DATA
387#endif // WITH_EDITORONLY_DATA
388 , TrackIndex(0)
389 , CachedNotifyEventName(NAME_None)
390 , CachedNotifyEventBaseName(NAME_None)
391 {
392 }
393
395 {
396 }
397
398#if WITH_EDITORONLY_DATA
399 ENGINE_API bool Serialize(FArchive& Ar);
400 ENGINE_API void PostSerialize(const FArchive& Ar);
401#endif
402
405
408
410 ENGINE_API float GetTriggerTime() const;
411
413 ENGINE_API float GetEndTriggerTime() const;
414
415 ENGINE_API float GetDuration() const;
416
417 ENGINE_API void SetDuration(float NewDuration);
418
420 ENGINE_API bool IsBranchingPoint() const;
421
423 bool IsBlueprintNotify() const
424 {
425 return Notify != nullptr || NotifyStateClass != nullptr;
426 }
427
428 bool operator ==(const FAnimNotifyEvent& Other) const
429 {
430 return(
431 (Notify && Notify == Other.Notify) ||
432 (NotifyStateClass && NotifyStateClass == Other.NotifyStateClass) ||
433 (!IsBlueprintNotify() && NotifyName == Other.NotifyName)
434 );
435 }
436
438 ENGINE_API bool operator <(const FAnimNotifyEvent& Other) const;
439
440 ENGINE_API virtual void SetTime(float NewTime, EAnimLinkMethod::Type ReferenceFrame = EAnimLinkMethod::Absolute) override;
441
443 ENGINE_API FName GetNotifyEventName() const;
444
446 ENGINE_API FName GetNotifyEventName(const UMirrorDataTable* MirrorDataTable) const;
447};
448
449#if WITH_EDITORONLY_DATA
450template<> struct TStructOpsTypeTraits<FAnimNotifyEvent> : public TStructOpsTypeTraitsBase2<FAnimNotifyEvent>
451{
452 enum
453 {
454 WithSerializer = true,
455 WithPostSerialize = true
456 };
457};
458#endif
459
460// Used by UAnimSequenceBase::SortNotifies() to sort its Notifies array
462{
463 float ATime = GetTriggerTime();
464 float BTime = Other.GetTriggerTime();
465
466 // When we've got the same time sort on the track index. Explicitly
467 // using SMALL_NUMBER here incase the underlying default changes as
468 // notifies can have an offset of KINDA_SMALL_NUMBER to be consider
469 // distinct
471 {
472 return TrackIndex < Other.TrackIndex;
473 }
474 else
475 {
476 return ATime < BTime;
477 }
478}
479
480USTRUCT(BlueprintType)
482{
484
486 : MarkerName(NAME_None)
487 , Time(0.0f)
488#if WITH_EDITORONLY_DATA
489 , TrackIndex(0)
490#endif
491 {}
492
493 // The name of this marker
494 UPROPERTY(BlueprintReadOnly, Category=Animation)
495 FName MarkerName;
496
497 // Time in seconds of this marker
498 UPROPERTY(BlueprintReadOnly, Category = Animation)
499 float Time;
500
501#if WITH_EDITORONLY_DATA
502 // The editor track this marker sits on
503 UPROPERTY()
504 int32 TrackIndex;
505
506 UPROPERTY()
507 FGuid Guid;
508#endif
509
510#if WITH_EDITORONLY_DATA
511 ENGINE_API bool Serialize(FArchive& Ar);
512#endif
513
515 bool operator <(const FAnimSyncMarker& Other) const { return Time < Other.Time; }
516
517 bool operator ==(const FAnimSyncMarker& Other) const
518 {
519 return MarkerName == Other.MarkerName &&
520#if WITH_EDITORONLY_DATA
521 TrackIndex == Other.TrackIndex &&
522 Guid == Other.Guid &&
523#endif
524 Time == Other.Time;
525 }
526};
527
528#if WITH_EDITORONLY_DATA
529template<> struct TStructOpsTypeTraits<FAnimSyncMarker> : public TStructOpsTypeTraitsBase2<FAnimSyncMarker>
530{
531 enum
532 {
533 WithSerializer = true
534 };
536};
537#endif
538
542USTRUCT()
544{
546
547 UPROPERTY()
548 FName TrackName;
549
550 UPROPERTY()
551 FLinearColor TrackColor;
552
554
555 TArray<FAnimSyncMarker*> SyncMarkers;
556
558 : TrackName(TEXT(""))
559 , TrackColor(FLinearColor::White)
560 {
561 }
562
564 : TrackName(InTrackName)
565 , TrackColor(InTrackColor)
566 {
567 }
568};
569
573UENUM()
575{
577 AAT_None UMETA(DisplayName="No additive"),
578 /* Create Additive from LocalSpace Base. */
579 AAT_LocalSpaceBase UMETA(DisplayName="Local Space"),
580 /* Create Additive from MeshSpace Rotation Only, Translation still will be LocalSpace. */
581 AAT_RotationOffsetMeshSpace UMETA(DisplayName="Mesh Space"),
583};
584
585UENUM()
587{
588 enum Type : int
589 {
590 /* Last pose that contains valid curve value override it. */
591 Override, // redirect from MaxWeight old legacy behavior
604 };
605}
606
611{
615
618
621
623 : SourceWeight(0.f)
624 , SlotNodeWeight(0.f)
625 , TotalNodeWeight(0.f)
626 {}
627
628 void Reset()
629 {
630 SourceWeight = 0.f;
631 SlotNodeWeight = 0.f;
632 TotalNodeWeight = 0.f;
633 }
634};
635
636USTRUCT()
638{
640
641
642 UPROPERTY()
643 TArray<FAnimSyncMarker> AuthoredSyncMarkers;
644
646 TArray<FName> UniqueMarkerNames;
647
648 void GetMarkerIndicesForTime(float CurrentTime, bool bLooping, const TArray<FName>& ValidMarkerNames, FMarkerPair& OutPrevMarker, FMarkerPair& OutNextMarker, float SequenceLength) const;
649
650 UE_DEPRECATED(5.0, "Use other GetMarkerSyncPositionFromMarkerIndicies signature")
651 FMarkerSyncAnimPosition GetMarkerSyncPositionfromMarkerIndicies(int32 PrevMarker, int32 NextMarker, float CurrentTime, float SequenceLength) const;
652 FMarkerSyncAnimPosition GetMarkerSyncPositionFromMarkerIndicies(int32 PrevMarker, int32 NextMarker, float CurrentTime, float SequenceLength, const UMirrorDataTable* MirrorTable = nullptr) const;
653 void CollectUniqueNames();
654 void CollectMarkersInRange(float PrevPosition, float NewPosition, TArray<FPassedMarker>& OutMarkersPassedThisTick, float TotalDeltaMove);
655};
656
657// Shortcut for the allocator used by animation nodes.
659
664{
666 static inline bool IsRelevant(float InWeight)
667 {
669 }
670
672 static inline bool IsFullWeight(float InWeight)
673 {
674 return (InWeight >= (1.f - ZERO_ANIMWEIGHT_THRESH));
675 }
676
678 static inline float GetSmallestRelevantWeight()
679 {
680 return 2.f * ZERO_ANIMWEIGHT_THRESH;
681 }
682};
683
687UENUM(BlueprintType)
689{
691 Linear UMETA(DisplayName="Linear"),
692
694 Step UMETA(DisplayName="Step"),
695};
696
697
698/*
699 * Smart name UID type definition
700 *
701 * This is used by FSmartNameMapping/FSmartName to identify by number
702 * This defines default type and Max number for the type and used all over animation code to identify curve
703 * including bone container containing valid UID list for curves
704 */
705 namespace SmartName
706{
707 // ID type, should be used to access SmartNames as fundamental type may change.
708 typedef uint16 UID_Type;
709 // Max UID used for overflow checking
710 inline constexpr UID_Type MaxUID = MAX_uint16;
711}
716{
718 : Length(InLength)
719 , NumKeys(InNumKeys)
720 {}
721
722 float TimePerKey() const
723 {
724 return (NumKeys > 1) ? Length / (float)(NumKeys - 1) : MINIMUM_ANIMATION_LENGTH;
725 }
726
727 // Returns the FPS for the given length and number of keys
728 float KeysPerSecond() const
729 {
730 return NumKeys > 0 ? (float(NumKeys - 1) / Length) : 0.0f;
731 }
732
734 {
735 return (NumKeys > 1) ? NumKeys - 1 : 0;
736 }
737
738 float GetLength() const
739 {
740 return Length;
741 }
742
744 {
745 return NumKeys;
746 }
747
748private:
749 float Length;
750 int32 NumKeys;
751};
752
753UENUM()
754namespace EAxisOption
755{
756 enum Type : int
757 {
758 X,
759 Y,
760 Z,
761 X_Neg,
762 Y_Neg,
763 Z_Neg,
764 Custom
765 };
766}
767
769{
771 {
772 switch (InAxis)
773 {
774 case EAxisOption::X:
776 case EAxisOption::X_Neg:
778 case EAxisOption::Y:
780 case EAxisOption::Y_Neg:
781 return -FVector::RightVector;
782 case EAxisOption::Z:
783 return FVector::UpVector;
784 case EAxisOption::Z_Neg:
785 return -FVector::UpVector;
786 case EAxisOption::Custom:
787 return CustomAxis;
788 }
789
791 }
792
797};
798
799// The transform component (attribute) to read from
800UENUM()
802{
817}
818
819// @note We have a plan to support skeletal hierarchy. When that happens, we'd like to keep skeleton indexing.
820USTRUCT()
822{
824
825 // Index of Skeleton.BoneTree this Track belongs to.
826 UPROPERTY()
827 int32 BoneTreeIndex;
828
829
831 : BoneTreeIndex(0)
832 {
833 }
834
836 : BoneTreeIndex(InBoneTreeIndex)
837 {
838 }
839
841 {
842 return Ar << Item.BoneTreeIndex;
843 }
844};
845
851USTRUCT(BlueprintType)
853{
855
856
857 UPROPERTY()
859
861 UPROPERTY()
862 TArray<FQuat4f> RotKeys;
863
865 UPROPERTY()
866 TArray<FVector3f> ScaleKeys;
867
868 // Serializer.
870 {
871 T.PosKeys.BulkSerialize(Ar);
872 T.RotKeys.BulkSerialize(Ar);
873
875 {
876 T.ScaleKeys.BulkSerialize(Ar);
877 }
878
879 return Ar;
880 }
881
882 bool ContainsNaN() const
883 {
884 bool bContainsNaN = false;
885
886 auto CheckForNan = [&bContainsNaN](const auto& Keys) -> bool
887 {
888 if (!bContainsNaN)
889 {
890 for (const auto& Key : Keys)
891 {
892 if (Key.ContainsNaN())
893 return true;
894 }
895
896 return false;
897 }
898
899 return true;
900 };
901
902 bContainsNaN = CheckForNan(PosKeys);
903 bContainsNaN = CheckForNan(RotKeys);
904 bContainsNaN = CheckForNan(ScaleKeys);
905
906 return bContainsNaN;
907 }
908
910 {
912
913 // Previously generated content was saved without bulk array serialization, so have to rely on UProperty serialization until resaved
914 if (Ar.CustomVer(FUE5ReleaseStreamObjectVersion::GUID) < FUE5ReleaseStreamObjectVersion::RawAnimSequenceTrackSerializer)
915 {
916 return false;
917 }
918
919 Ar << *this;
920
921 return true;
922 }
923
924 static const uint32 SingleKeySize = sizeof(FVector3f) + sizeof(FQuat4f) + sizeof(FVector3f);
925};
926
932
933UCLASS(MinimalAPI)
935{
937public:
938
942 UFUNCTION(BlueprintPure, Category = Animation, meta=(ScriptMethod))
943 static TArray<FVector> GetPositionalKeys(UPARAM(ref)const FRawAnimSequenceTrack& Track)
944 {
945 TArray<FVector> Keys;
946 Algo::Transform(Track.PosKeys, Keys, [](FVector3f FloatKey)
947 {
948 return FVector(FloatKey);
949 });
950
951 return Keys;
952 }
953
957 UFUNCTION(BlueprintPure, Category = Animation, meta=(ScriptMethod))
958 static TArray<FQuat> GetRotationalKeys(UPARAM(ref)const FRawAnimSequenceTrack& Track)
959 {
960 TArray<FQuat> Keys;
961 Algo::Transform(Track.RotKeys, Keys, [](FQuat4f FloatKey)
962 {
963 return FQuat(FloatKey);
964 });
965
966 return Keys;
967 }
968
972 UFUNCTION(BlueprintPure, Category = Animation, meta=(ScriptMethod))
973 static TArray<FVector> GetScaleKeys(UPARAM(ref)const FRawAnimSequenceTrack& Track)
974 {
975 TArray<FVector> Keys;
976 Algo::Transform(Track.ScaleKeys, Keys, [](FVector3f FloatKey)
977 {
978 return FVector(FloatKey);
979 });
980
981 return Keys;
982 }
983};
984
985
990{
991public:
994
997
1000
1003
1006
1009
1012
1015
1018
1021 {
1022 return GetDepth() ? BonesToRoot[0] : -1;
1023 }
1024
1027 {
1028 return BonesToRoot.Num();
1029 }
1030
1032 bool IsEndEffector() const
1033 {
1034 return Children.Num() == 0;
1035 }
1036};
1037
1038#if 0
1039template <typename ArrayType>
1041{
1042 FSHA1 Sha;
1043 Sha.Update((uint8*)Array.GetData(), Array.Num() * Array.GetTypeSize());
1044
1045 Sha.Final();
1046
1047 uint32 Hash[5];
1048 Sha.GetHash((uint8*)Hash);
1049 FGuid Guid(Hash[0] ^ Hash[4], Hash[1], Hash[2], Hash[3]);
1050 return Guid;
1051}
1052
1053template <typename ArrayType>
1055{
1057 for (int32 i = 0; i < Array.Num(); ++i)
1058 {
1060 }
1061}
1062
1063template <>
1065#endif
NotifyName
Definition AnimInstance.h:121
EAnimInterpolationType
Definition AnimTypes.h:689
EBoneControlSpace
Definition AnimTypes.h:60
@ BCS_MAX
Definition AnimTypes.h:69
#define MINIMUM_ANIMATION_LENGTH
Definition AnimTypes.h:28
EBoneAxis
Definition AnimTypes.h:50
ENGINE_API float GetTriggerTimeOffsetForType(EAnimEventTriggerOffsets::Type OffsetType)
Definition AnimTypes.cpp:15
EBoneRotationSource
Definition AnimTypes.h:75
EAdditiveAnimationType
Definition AnimTypes.h:575
@ UMETA
Definition AnimTypes.h:51
@ AAT_MAX
Definition AnimTypes.h:582
uint64 GFrameCounter
Definition CoreGlobals.cpp:418
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::int16 int16
A 16-bit signed integer.
Definition Platform.h:1123
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
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 X(Name, Desc)
Definition FormatStringSan.h:47
bool operator<(const FTextFormatString &LHS, const FTextFormatString &RHS)
Definition ITextFormatArgumentModifier.h:147
UE::Math::TVector< float > FVector3f
Definition MathFwd.h:73
#define MAX_uint16
Definition NumericLimits.h:20
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UPARAM(...)
Definition ObjectMacros.h:748
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
EPropertyObjectReferenceType
Definition ObjectMacros.h:533
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
@ VER_UE4_ANIM_SUPPORT_NONUNIFORM_SCALE_ANIMATION
Definition ObjectVersion.h:359
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
#define UE_SMALL_NUMBER
Definition UnrealMathUtility.h:130
#define ZERO_ANIMWEIGHT_THRESH
Definition VectorRegister.h:133
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
CORE_API int32 CustomVer(const struct FGuid &Key) const
Definition Archive.cpp:602
Definition AnimTypes.h:990
FName Name
Definition AnimTypes.h:1002
TArray< int32 > BonesToRoot
Definition AnimTypes.h:1008
bool bKeyEndEffector
Definition AnimTypes.h:1017
TArray< int32 > EndEffectors
Definition AnimTypes.h:1011
FVector3f Position
Definition AnimTypes.h:996
FVector3f Scale
Definition AnimTypes.h:999
int32 GetParent() const
Definition AnimTypes.h:1020
FQuat Orientation
Definition AnimTypes.h:993
int32 GetDepth() const
Definition AnimTypes.h:1026
bool IsEndEffector() const
Definition AnimTypes.h:1032
TArray< int32 > Children
Definition AnimTypes.h:1005
bool bHasSocket
Definition AnimTypes.h:1014
Definition MemoryReader.h:17
Definition MemoryWriter.h:101
Definition NameTypes.h:617
Definition SecureHash.h:314
CORE_API void Update(const uint8 *data, uint64 len)
Definition SecureHash.cpp:1205
CORE_API void GetHash(uint8 *puDest) const
Definition SecureHash.cpp:1269
CORE_API void Final()
Definition SecureHash.cpp:1245
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition EnumAsByte.h:22
Definition MemStack.h:391
Definition AnimNotifyState.h:25
Definition AnimNotify.h:52
Definition BlueprintFunctionLibrary.h:16
Definition MirrorDataTable.h:102
Definition AnimTypes.h:935
void Transform(const InT &Input, OutT &&Output, TransformT Trans)
Definition Transform.h:66
Definition AnimTypes.h:36
Type
Definition AnimTypes.h:38
@ OffsetBefore
Definition AnimTypes.h:39
@ NoOffset
Definition AnimTypes.h:41
@ OffsetAfter
Definition AnimTypes.h:40
Type
Definition AnimLinkableElement.h:18
@ Absolute
Definition AnimLinkableElement.h:20
Definition AnimTypes.h:755
Definition AnimTypes.h:802
Type
Definition AnimTypes.h:804
Definition AnimTypes.h:587
Type
Definition AnimTypes.h:589
@ BlendByWeight
Definition AnimTypes.h:597
@ UseMaxValue
Definition AnimTypes.h:601
@ UseMinValue
Definition AnimTypes.h:603
@ UseBasePose
Definition AnimTypes.h:599
@ NormalizeByWeight
Definition AnimTypes.h:595
Definition AnimTypes.h:87
Type
Definition AnimTypes.h:89
@ BranchingPoint
Definition AnimTypes.h:93
@ Queued
Definition AnimTypes.h:91
Definition AnimTypes.h:100
Type
Definition AnimTypes.h:102
@ LOD
Definition AnimTypes.h:107
@ NoFiltering
Definition AnimTypes.h:104
FString ToString(uint16 Value)
Definition PathFollowingComponent.cpp:82
Definition AnimationAsset.h:38
constexpr UID_Type MaxUID
Definition AnimTypes.h:710
uint16 UID_Type
Definition AnimationAsset.h:39
Definition AnimTypes.h:716
int32 LastKey() const
Definition AnimTypes.h:733
float KeysPerSecond() const
Definition AnimTypes.h:728
float TimePerKey() const
Definition AnimTypes.h:722
FAnimKeyHelper(float InLength, int32 InNumKeys)
Definition AnimTypes.h:717
int32 GetNumKeys() const
Definition AnimTypes.h:743
float GetLength() const
Definition AnimTypes.h:738
Definition AnimLinkableElement.h:40
Definition AnimTypes.h:277
ENGINE_API float GetTriggerTime() const
Definition AnimTypes.cpp:81
virtual ~FAnimNotifyEvent()
Definition AnimTypes.h:394
ENGINE_API bool operator<(const FAnimNotifyEvent &Other) const
Definition AnimTypes.h:461
int32 TrackIndex
Definition AnimTypes.h:356
bool IsBlueprintNotify() const
Definition AnimTypes.h:423
Definition AnimTypes.h:544
FAnimNotifyTrack(FName InTrackName, FLinearColor InTrackColor)
Definition AnimTypes.h:563
Definition AnimTypes.h:482
Definition AnimTypes.h:664
static bool IsFullWeight(float InWeight)
Definition AnimTypes.h:672
static float GetSmallestRelevantWeight()
Definition AnimTypes.h:678
static bool IsRelevant(float InWeight)
Definition AnimTypes.h:666
Definition AnimTypes.h:769
static FVector GetAxisVector(const TEnumAsByte< EAxisOption::Type > InAxis)
Definition AnimTypes.h:793
static FVector GetAxisVector(const TEnumAsByte< EAxisOption::Type > InAxis, const FVector &CustomAxis)
Definition AnimTypes.h:770
Definition Color.h:486
static CORE_API const FColor Black
Definition Color.h:750
static CORE_API void VARARGS LowLevelOutputDebugStringf(const TCHAR *Format,...)
Definition GenericPlatformMisc.cpp:940
Definition AnimTypes.h:144
bool IsSynchronized_Frame(const FGraphTraversalCounter &InOtherCounter) const
Definition AnimTypes.h:222
int16 Get() const
Definition AnimTypes.h:164
bool IsSynchronized_All(const FGraphTraversalCounter &InOtherCounter) const
Definition AnimTypes.h:228
bool WasSynchronizedCounter(const FGraphTraversalCounter &InOtherCounter) const
Definition AnimTypes.h:234
FGraphTraversalCounter()
Definition AnimTypes.h:157
void Reset()
Definition AnimTypes.h:200
int16 GetMaxSkippedFrames() const
Definition AnimTypes.h:194
void Increment()
Definition AnimTypes.h:175
bool WasSynchronizedLastFrame(const FGraphTraversalCounter &InOtherCounter) const
Definition AnimTypes.h:258
bool IsSynchronized_Counter(const FGraphTraversalCounter &InOtherCounter) const
Definition AnimTypes.h:216
void SynchronizeWith(const FGraphTraversalCounter &InMasterCounter)
Definition AnimTypes.h:208
void SetMaxSkippedFrames(int16 InMaxSkippedFrames)
Definition AnimTypes.h:188
bool HasEverBeenUpdated() const
Definition AnimTypes.h:169
Definition Guid.h:109
Definition Color.h:48
Definition AnimationAsset.h:56
Definition AnimationAsset.h:361
Definition AnimTypes.h:638
static UE_FORCEINLINE_HINT bool IsNearlyEqual(float A, float B, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:388
Definition AnimationAsset.h:400
Definition AnimTypes.h:113
Definition AnimTypes.h:132
Definition AnimTypes.h:853
bool ContainsNaN() const
Definition AnimTypes.h:882
bool Serialize(FArchive &Ar)
Definition AnimTypes.h:909
Definition AnimTypes.h:611
FSlotNodeWeightInfo()
Definition AnimTypes.h:622
void Reset()
Definition AnimTypes.h:628
float SourceWeight
Definition AnimTypes.h:614
float SlotNodeWeight
Definition AnimTypes.h:617
float TotalNodeWeight
Definition AnimTypes.h:620
Definition AnimTypes.h:822
FTrackToSkeletonMap(int32 InBoneTreeIndex)
Definition AnimTypes.h:835
int32 BoneTreeIndex
Definition AnimTypes.h:827
friend FArchive & operator<<(FArchive &Ar, FTrackToSkeletonMap &Item)
Definition AnimTypes.h:840
CORE_API static const FGuid GUID
Definition UE5ReleaseStreamObjectVersion.h:22
Definition ObjectPtr.h:488
Definition StructOpsTypeTraits.h:11
@ WithSerializer
Definition StructOpsTypeTraits.h:23
@ WithPostSerialize
Definition StructOpsTypeTraits.h:25
static constexpr EPropertyObjectReferenceType WithSerializerObjectReferences
Definition StructOpsTypeTraits.h:41
Definition StructOpsTypeTraits.h:46
static CORE_API const TVector< double > ForwardVector
Definition Vector.h:91
static CORE_API const TVector< double > UpVector
Definition Vector.h:85
static CORE_API const TVector< double > RightVector
Definition Vector.h:97