UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
BlendSpace.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 "BoneContainer.h"
14#include "AnimationRuntime.h"
15#include "AnimNodeBase.h"
18#include "BlendSpace.generated.h"
19
21class UBlendSpace;
22
28UCLASS(MinimalAPI, config=Engine)
30{
32
33public:
35 virtual void MakeCache(TObjectPtr<UCachedAnalysisProperties>& Cache, UBlendSpace* BlendSpace) {};
36
38 UPROPERTY()
39 FString Function = TEXT("None");
40};
41
43UENUM()
45{
46 BSA_None UMETA(DisplayName = "None"),
47 BSA_X UMETA(DisplayName = "Horizontal (X) Axis"),
48 BSA_Y UMETA(DisplayName = "Vertical (Y) Axis")
49};
50
51UENUM()
53{
54 None UMETA(DisplayName = "None", ToolTip = "None"),
55 Tangential UMETA(DisplayName = "Tangential", ToolTip = "When there is ambiguity, rectangles will be split so that the inserted edge tends to not point towards the origin"),
56 Radial UMETA(DisplayName = "Radial", ToolTip = "When there is ambiguity, rectangles will be split so that the inserted edge tends to point towards the origin")
57};
58
59UENUM()
61{
62 ManualPerBoneOverride UMETA(DisplayName = "Manual Per Bone Override", ToolTip = "Manually specify the bones and their smoothing interpolation times."),
63 BlendProfile UMETA(DisplayName = "Blend Profile", ToolTip = "Use a blend profile to specify the bone smoothing interpolation times.")
64};
65
66USTRUCT()
68{
70
71 UPROPERTY(EditAnywhere, Category = SampleSmoothing, meta = (DisplayName = "Blend Profile", UseAsBlendMask = true, EditConditionHides))
73
74 UPROPERTY(EditAnywhere, Category = SampleSmoothing, meta = (DisplayName = "Weight Speed", ClampMin = "0"))
76};
77
78USTRUCT()
80{
82
83
88 UPROPERTY(EditAnywhere, DisplayName = "Smoothing Time", Category=Parameter, meta = (ClampMin = "0"))
89 float InterpolationTime = 0.f;
90
96 UPROPERTY(EditAnywhere, Category=Parameter, meta = (ClampMin = "0", EditCondition = "InterpolationType == EFilterInterpolationType::BSIT_SpringDamper && InterpolationTime > 0"))
97 float DampingRatio = 1.f;
98
104 UPROPERTY(EditAnywhere, Category=Parameter, meta = (ClampMin = "0"))
105 float MaxSpeed = 0.f;
106
108 UPROPERTY(EditAnywhere, DisplayName = "Smoothing Type", Category=Parameter, meta = (EditCondition = "InterpolationTime > 0"))
110};
111
112USTRUCT()
114{
116
117 UPROPERTY(EditAnywhere, DisplayName = "Name", Category=BlendParameter)
118 FString DisplayName;
119
121 UPROPERTY(EditAnywhere, DisplayName = "Minimum Axis Value", Category=BlendParameter, meta=(NoResetToDefault))
122 float Min;
123
125 UPROPERTY(EditAnywhere, DisplayName = "Maximum Axis Value", Category=BlendParameter, meta=(NoResetToDefault))
126 float Max;
127
129 UPROPERTY(EditAnywhere, DisplayName = "Grid Divisions", Category=BlendParameter, meta=(UIMin="1", ClampMin="1"))
130 int32 GridNum;
131
133 UPROPERTY(EditAnywhere, DisplayName = "Snap to Grid", Category = BlendParameter)
134 bool bSnapToGrid;
135
137 UPROPERTY(EditAnywhere, DisplayName = "Wrap Input", Category = BlendParameter)
138 bool bWrapInput;
139
141 : DisplayName(TEXT("None"))
142 , Min(0.f)
143 , Max(100.f)
144 , GridNum(4) // TODO when changing GridNum's default value, it breaks all grid samples ATM - provide way to rebuild grid samples during loading
145 , bSnapToGrid(false)
146 , bWrapInput(false)
147 {
148 }
149
150 float GetRange() const
151 {
152 return Max-Min;
153 }
155 float GetGridSize() const
156 {
157 return GetRange()/(float)GridNum;
158 }
159
160};
161
163USTRUCT()
165{
167
168 // For linked animations
169 UPROPERTY(EditAnywhere, Category=BlendSample)
171
172 //blend 0->x, blend 1->y, blend 2->z
173
174 UPROPERTY(EditAnywhere, Category=BlendSample)
175 FVector SampleValue;
176
177 UPROPERTY(EditAnywhere, Category = BlendSample, meta=(UIMin="0.01", UIMax="2.0", ClampMin="0.01", ClampMax="64.0"))
178 float RateScale = 1.0f;
179
180 UPROPERTY(EditAnywhere, Category = BlendSample, meta=(InlineEditConditionToggle))
181 bool bUseSingleFrameForBlending = false;
182
183 // Single Frame Blending: If selected, instead of using the entire animation sequence, only the specified single frame is used for sampling the animation
184 UPROPERTY(EditAnywhere, Category = BlendSample, meta=(EditCondition="bUseSingleFrameForBlending", DisplayName="Use Single Frame", UIMin="0"))
185 uint32 FrameIndexToSample = 0;
186
187#if WITH_EDITORONLY_DATA
188 // Whether or not this sample will be moved when the "analyse all" button is used. Note that, even if disabled,
189 // it will still be available for individual sample analysis/moving
190 UPROPERTY(EditAnywhere, Category = BlendSample, meta=(UIMin="0.01", UIMax="2.0", ClampMin="0.01", ClampMax="64.0"))
192
194 uint8 bIsValid : 1;
195
196 // Cache the samples marker data counter so that we can track if it changes and revalidate the blendspace
198
199#endif // WITH_EDITORONLY_DATA
200
202 : Animation(nullptr)
203 , SampleValue(0.f)
204 , RateScale(1.0f)
207 , bIsValid(false)
209#endif // WITH_EDITORONLY_DATA
210 {
211 }
212
215 , SampleValue(InValue)
216 , RateScale(1.0f)
219 , bIsValid(bInIsValid)
221#endif // WITH_EDITORONLY_DATA
222 {
223 }
224
225 bool operator==( const FBlendSample& Other ) const
226 {
227 return (Other.Animation == Animation && Other.SampleValue == SampleValue && Other.bUseSingleFrameForBlending == bUseSingleFrameForBlending && Other.FrameIndexToSample == FrameIndexToSample && FMath::IsNearlyEqual(Other.RateScale, RateScale));
228 }
229
230 ENGINE_API float GetSamplePlayLength() const;
231};
232
236USTRUCT()
238{
240
241public:
242 // Triangles have three vertices
243 static const int32 NUM_VERTICES = 2;
244
246 UPROPERTY()
247 int32 SampleIndices[NUM_VERTICES] = { INDEX_NONE, INDEX_NONE };
248
250 UPROPERTY()
251 float Vertices[NUM_VERTICES] = { 0.f, 0.f };
252};
253
254USTRUCT()
256{
258
259public:
261 UPROPERTY()
263
264 UPROPERTY()
265 int32 NeighbourTriangleIndex = INDEX_NONE;
266
271 UPROPERTY()
272 int32 AdjacentPerimeterTriangleIndices[2] = { INDEX_NONE, INDEX_NONE };
273
278 UPROPERTY()
279 int32 AdjacentPerimeterVertexIndices[2] = { INDEX_NONE, INDEX_NONE };
280};
281
286USTRUCT()
288{
290
291public:
292 // Triangles have three vertices
293 static const int32 NUM_VERTICES = 3;
294
295public:
296
298 UPROPERTY(EditAnywhere, Category = EditorElement)
299 int32 SampleIndices[NUM_VERTICES] = { INDEX_NONE, INDEX_NONE, INDEX_NONE };
300
302 UPROPERTY(EditAnywhere, Category = EditorElement)
303 FVector2D Vertices[NUM_VERTICES] = { FVector2D(0.f), FVector2D(0.f), FVector2D(0.f) };
304
306 UPROPERTY(EditAnywhere, Category = EditorElement)
307 FBlendSpaceTriangleEdgeInfo EdgeInfo[NUM_VERTICES];
308};
309
310USTRUCT()
312{
314
315public:
316 FWeightedBlendSample(int32 Index = INDEX_NONE, float Weight = 0) : SampleIndex(Index), SampleWeight(Weight) {}
317
318public:
319 UPROPERTY()
320 int32 SampleIndex;
321
322 UPROPERTY()
323 float SampleWeight;
324};
325
330USTRUCT()
332{
334public:
335 void GetSamples(
340
341 void Empty()
342 {
343 Segments.Empty();
344 Triangles.Empty();
345 }
346
347 bool IsEmpty() const
348 {
349 return Segments.Num() == 0 && Triangles.Num() == 0;
350 }
351public:
352 UPROPERTY()
354
355 UPROPERTY()
357
358private:
359 void GetSamples1D(
363 int32& InOutSegmentIndex) const;
364
365 void GetSamples2D(
370};
371
375USTRUCT()
377{
379
380 // for now we only support triangles
381 static const int32 MAX_VERTICES = 3;
382
383 UPROPERTY(EditAnywhere, Category=EditorElement)
384 int32 Indices[MAX_VERTICES];
385
386 UPROPERTY(EditAnywhere, Category=EditorElement)
387 float Weights[MAX_VERTICES];
388
390 {
391 for (int32 ElementIndex = 0; ElementIndex < MAX_VERTICES; ElementIndex++)
392 {
393 Indices[ElementIndex] = INDEX_NONE;
394 Weights[ElementIndex] = 0;
395 }
396 }
397
398};
399
401USTRUCT()
403{
405
406 UPROPERTY()
408
409 UPROPERTY()
410 float BlendWeight;
411
413 : BlendWeight(0)
414 {
415 }
416
417};
418
419USTRUCT()
421{
423
424 UPROPERTY(EditAnywhere, Category=FPerBoneInterpolation)
425 FBoneReference BoneReference;
426
438 UPROPERTY(EditAnywhere, Category=FPerBoneInterpolation, meta=(DisplayName="Weight Speed"))
439 float InterpolationSpeedPerSec;
440
442 : InterpolationSpeedPerSec(6.f)
443 {}
444
446 {
447 BoneReference.Initialize(Skeleton);
448 }
449};
450
451UENUM()
453{
454 enum Type : int
455 {
456 AllAnimations UMETA(DisplayName="All Animations"),
457 HighestWeightedAnimation UMETA(DisplayName="Highest Weighted Animation"),
459 };
460}
461
465UCLASS(config=Engine, hidecategories=Object, MinimalAPI, BlueprintType)
467{
469public:
470
472 friend class FBlendSpaceDetails;
473 friend class FBlendSampleDetails;
474 friend class UAnimGraphNode_BlendSpaceGraphBase;
475 friend class SBlendSpaceGridWidget;
476
477 //~ Begin UObject Interface
478 virtual void PostLoad() override;
479 virtual void Serialize(FArchive& Ar) override;
480#if WITH_EDITOR
481 virtual void PreEditChange(FProperty* PropertyAboutToChange) override;
482 virtual void PostEditChangeProperty( struct FPropertyChangedEvent& PropertyChangedEvent) override;
483#endif // WITH_EDITOR
484 virtual void GetResourceSizeEx(FResourceSizeEx& CumulativeResourceSize) override;
485 //~ End UObject Interface
486
487 //~ Begin UAnimationAsset Interface
488 virtual void TickAssetPlayer(FAnimTickRecord& Instance, struct FAnimNotifyQueue& NotifyQueue, FAnimAssetTickContext& Context) const override;
489 // this is used in editor only when used for transition getter
490 // this doesn't mean max time. In Sequence, this is SequenceLength,
491 // but for BlendSpace CurrentTime is normalized [0,1], so this is 1
492 virtual float GetPlayLength() const override { return 1.f; }
493 virtual TArray<FName>* GetUniqueMarkerNames() override;
494 virtual bool IsValidAdditive() const override;
495#if WITH_EDITOR
496 virtual bool GetAllAnimationSequencesReferred(TArray<UAnimationAsset*>& AnimationAssets, bool bRecursive = true) override;
497 virtual void ReplaceReferredAnimations(const TMap<UAnimationAsset*, UAnimationAsset*>& ReplacementMap) override;
498 virtual int32 GetMarkerUpdateCounter() const;
500#endif
501 //~ End UAnimationAsset Interface
502
503 // Begin IInterpolationIndexProvider Overrides
504
508 virtual TSharedPtr<IInterpolationIndexProvider::FPerBoneInterpolationData> GetPerBoneInterpolationData(const USkeleton* Skeleton) const override;
509
514 virtual int32 GetPerBoneInterpolationIndex(const FCompactPoseBoneIndex& InCompactPoseBoneIndex, const FBoneContainer& RequiredBones, const IInterpolationIndexProvider::FPerBoneInterpolationData* Data) const override;
515
520 virtual int32 GetPerBoneInterpolationIndex(const FSkeletonPoseBoneIndex InSkeletonBoneIndex, const USkeleton* TargetSkeleton, const IInterpolationIndexProvider::FPerBoneInterpolationData* Data) const override;
521 // End IInterpolationIndexProvider Overrides
522
524 ENGINE_API virtual bool IsValidAdditiveType(EAdditiveAnimationType AdditiveType) const;
525
529 UE_DEPRECATED(4.26, "Use GetAnimationPose with other signature")
530 ENGINE_API void GetAnimationPose(TArray<FBlendSampleData>& BlendSampleDataCache, /*out*/ FCompactPose& OutPose, /*out*/ FBlendedCurve& OutCurve) const;
531
532 UE_DEPRECATED(5.0, "Use GetAnimationPose with extraction context signature")
533 ENGINE_API void GetAnimationPose(TArray<FBlendSampleData>& BlendSampleDataCache, /*out*/ FAnimationPoseData& OutAnimationPoseData) const;
534
535 UE_DEPRECATED(5.0, "Use GetAnimationPose with extraction context signature")
536 ENGINE_API void GetAnimationPose(TArray<FBlendSampleData>& BlendSampleDataCache, TArrayView<FPoseLink> InPoseLinks, /*out*/ FPoseContext& Output) const;
537
538 ENGINE_API void GetAnimationPose(TArray<FBlendSampleData>& BlendSampleDataCache, const FAnimExtractContext& ExtractionContext, /*out*/ FAnimationPoseData& OutAnimationPoseData) const;
539
540 ENGINE_API void GetAnimationPose(TArray<FBlendSampleData>& BlendSampleDataCache, TArrayView<FPoseLink> InPoseLinks, const FAnimExtractContext& ExtractionContext, /*out*/ FPoseContext& Output) const;
541
543 ENGINE_API const FBlendParameter& GetBlendParameter(const int32 Index) const;
544
546 const TArray<struct FBlendSample>& GetBlendSamples() const { return SampleData; }
547
549 ENGINE_API const struct FBlendSample& GetBlendSample(const int32 SampleIndex) const;
550
562
564 ENGINE_API float GetAnimationLengthFromSampleData(const TArray<FBlendSampleData>& SampleDataList) const;
565
570 ENGINE_API void InitializeFilter(FBlendFilter* Filter, int NumDimensions = 2) const;
571
573 ENGINE_API void UpdateFilterParams(FBlendFilter* Filter) const;
574
576 ENGINE_API FVector GetClampedAndWrappedBlendInput(const FVector& BlendInput) const;
577
586
595 ENGINE_API void ResetBlendSamples(TArray<FBlendSampleData>& InOutSampleDataCache, float InNormalizedCurrentTime, bool bLooping, bool bMatchSyncPhases = true) const;
596
601 ENGINE_API void ForEachImmutableSample(const TFunctionRef<void(const FBlendSample&)> Func) const;
602
604 ENGINE_API FVector FilterInput(FBlendFilter* Filter, const FVector& BlendInput, float DeltaTime) const;
605
607 ENGINE_API float ComputeAxisScaleFactor(const FVector& BlendSpacePosition, const FVector& FilteredBlendInput) const;
608
609#if WITH_EDITOR
612
615
617 ENGINE_API int32 AddSample(const FVector& SampleValue);
618 ENGINE_API int32 AddSample(UAnimSequence* AnimationSequence, const FVector& SampleValue);
619
621
623 ENGINE_API bool EditSampleValue(const int32 BlendSampleIndex, const FVector& NewValue);
624
625 UE_DEPRECATED(5.0, "Please use ReplaceSampleAnimation instead")
626 ENGINE_API bool UpdateSampleAnimation(UAnimSequence* AnimationSequence, const FVector& SampleValue);
627
630
633
635 int32 GetNumberOfBlendSamples() const { return SampleData.Num(); }
636
638 ENGINE_API bool IsValidBlendSampleIndex(const int32 SampleIndex) const;
639
648
650 ENGINE_API FVector GetGridPosition(int32 GridIndex) const;
651
654
659
664
668 ENGINE_API void SetBlendSpaceData(const TArray<FBlendSpaceSegment>& Segments);
669
671 ENGINE_API bool ValidateAnimationSequence(const UAnimSequence* AnimationSequence) const;
672
674 ENGINE_API bool DoesAnimationMatchExistingSamples(const UAnimSequence* AnimationSequence) const;
675
678
680 ENGINE_API bool IsAnimationCompatibleWithSkeleton(const UAnimSequence* AnimationSequence) const;
681
683 ENGINE_API bool IsAnimationCompatible(const UAnimSequence* AnimationSequence) const;
684
686 ENGINE_API bool ValidateSampleValue(const FVector& SampleValue, int32 OriginalIndex = INDEX_NONE) const;
687
689
691 ENGINE_API bool IsTooCloseToExistingSamplePoint(const FVector& SampleValue, int32 OriginalIndex) const;
692#endif
693
694protected:
702 void GetRawSamplesFromBlendInput(const FVector& BlendInput, TArray<FGridBlendSample, TInlineAllocator<4> >& OutBlendSamples) const;
703
705 virtual EBlendSpaceAxis GetAxisToScale() const { return AxisToScaleAnimation; }
706
708 void InitializePerBoneBlend();
709
711 void TickFollowerSamples(
713 bool bResetMarkerDataOnFollowers, bool bLooping, const UMirrorDataTable* MirrorDataTable = nullptr) const;
714
716 FVector GetClampedBlendInput(const FVector& BlendInput) const;
717
719 FVector ConvertBlendInputToGridSpace(const FVector& BlendInput) const;
720
722 FVector GetNormalizedBlendInput(const FVector& BlendInput) const;
723
725 const FEditorElement* GetGridSampleInternal(int32 Index) const;
726
728 bool InterpolateWeightOfSampleData(float DeltaTime, const TArray<FBlendSampleData> & OldSampleDataList, const TArray<FBlendSampleData> & NewSampleDataList, TArray<FBlendSampleData> & FinalSampleDataList) const;
729
731 bool ContainsMatchingSamples(EAdditiveAnimationType AdditiveType) const;
732
734 bool IsSameSamplePoint(const FVector& SamplePointA, const FVector& SamplePointB) const;
735
736#if WITH_EDITOR
737 bool ContainsNonAdditiveSamples() const;
740 virtual void SnapSamplesToClosestGridPoint();
741#endif // WITH_EDITOR
742
744private:
745 // Internal helper function for GetAnimationPose variants
747
748 // Internal helper function for UpdateBlendSamples and TickAssetPlayer
750
751public:
752#if WITH_EDITORONLY_DATA
753 UE_DEPRECATED(5.1, "This property is deprecated. Please use/see bContainsRotationOffsetMeshSpaceSamples instead")
755#endif
756
758 UPROPERTY()
759 bool bContainsRotationOffsetMeshSpaceSamples;
760
762 UPROPERTY(EditAnywhere, Category = InputInterpolation)
763 FInterpolationParameter InterpolationParam[3];
764
765#if WITH_EDITORONLY_DATA
770 UPROPERTY(EditAnywhere, Category = AnalysisProperties)
772
775#endif
776
793 UPROPERTY(EditAnywhere, Category = SampleSmoothing, meta = (DisplayName = "Weight Speed", ClampMin = "0"))
794 float TargetWeightInterpolationSpeedPerSec = 0.0f;
795
799 UPROPERTY(EditAnywhere, Category = SampleSmoothing, meta = (DisplayName = "Smoothing"))
800 bool bTargetWeightInterpolationEaseInOut = true;
801
815 UPROPERTY(EditAnywhere, Category = SampleSmoothing)
816 bool bAllowMeshSpaceBlending = false;
817
822 UPROPERTY(EditAnywhere, Category=Animation)
823 bool bLoop = true;
824
826 UPROPERTY(EditAnywhere, Category = Animation)
827 bool bAllowMarkerBasedSync = true;
828
830 UPROPERTY(EditAnywhere, Category = Animation)
831 bool bShouldMatchSyncPhases = false;
832
833#if WITH_EDITORONLY_DATA
835 UPROPERTY(EditAnywhere, Category = AdditiveSettings)
837#endif // WITH_EDITORONLY_DATA
838
840 UPROPERTY()
841 float AnimLength;
842
848 UPROPERTY(EditAnywhere, Category = AnimationNotifies)
849 TEnumAsByte<ENotifyTriggerMode::Type> NotifyTriggerMode;
850
852 UPROPERTY(EditAnywhere, Category = InputInterpolation, meta = (DisplayName="Use Grid"))
853 bool bInterpolateUsingGrid = false;
854
856 UPROPERTY(EditAnywhere, Category = InputInterpolation)
858
860
864 UPROPERTY(EditAnywhere, Category = SampleSmoothing)
866
873 UPROPERTY(EditAnywhere, Category = SampleSmoothing, meta = (DisplayName="Per Bone Overrides", EditCondition = "PerBoneBlendMode == EBlendSpacePerBoneBlendMode::ManualPerBoneOverride", EditConditionHides))
874 TArray<FPerBoneInterpolation> ManualPerBoneOverrides;
875
879 UPROPERTY(EditAnywhere, Category = SampleSmoothing, meta = (DisplayName = "Per Bone Overrides", EditCondition = "PerBoneBlendMode == EBlendSpacePerBoneBlendMode::BlendProfile", EditConditionHides))
880 FBlendSpaceBlendProfile PerBoneBlendProfile;
881
886 TArray<FPerBoneInterpolation> PerBoneBlendValues;
887
890 UPROPERTY()
891 int32 SampleIndexWithMarkers = INDEX_NONE;
892
894 UPROPERTY(EditAnywhere, Category=BlendSamples)
896
898 UPROPERTY()
900
902 UPROPERTY()
903 FBlendSpaceData BlendSpaceData;
904
906 UPROPERTY(EditAnywhere, Category = BlendParametersTest)
907 struct FBlendParameter BlendParameters[3];
908
914 UPROPERTY(EditAnywhere, Category = InputInterpolation)
915 TEnumAsByte<EBlendSpaceAxis> AxisToScaleAnimation;
916
918 void ResetToRefPose(FCompactPose& OutPose) const;
919
921 UPROPERTY()
922 TArray<int32> DimensionIndices;
923
924#if WITH_EDITOR
925private:
926 // Track whether we have updated markers so cached data can be updated
928protected:
930 float PreviousGridSpacings[3];
931#endif
932
933private:
934
935 void GetRawSamplesFromBlendInput1D(const FVector& BlendInput, TArray<FGridBlendSample, TInlineAllocator<4> >& OutBlendSamples) const;
936
937 void GetRawSamplesFromBlendInput2D(const FVector& BlendInput, TArray<FGridBlendSample, TInlineAllocator<4> >& OutBlendSamples) const;
938
946 void FillupGridElements(const TArray<FEditorElement>& GridElements, const TArray<int32>& InDimensionIndices);
947
948 void EmptyGridElements();
949
950 void ClearBlendSpaceData();
951
952 void SetBlendSpaceData(const TArray<FBlendSpaceTriangle>& Triangles);
953
954 void ResampleData1D();
955 void ResampleData2D();
956
957
965 const FEditorElement* GetEditorElement(int32 XIndex, int32 YIndex) const;
966};
@ Normal
Definition AndroidInputInterface.h:116
EAdditiveAnimationType
Definition AnimTypes.h:575
EBlendSpaceAxis
Definition BlendSpace.h:45
@ UMETA
Definition BlendSpace.h:46
EBlendSpacePerBoneBlendMode
Definition BlendSpace.h:61
EPreferredTriangulationDirection
Definition BlendSpace.h:53
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define WITH_EDITORONLY_DATA
Definition CoreMiscDefines.h:24
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#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
EFilterInterpolationType
Definition EngineTypes.h:1250
return true
Definition ExternalRpcRegistry.cpp:601
@ BlendParameter
Definition MaterialParameters.h:27
UE::Math::TVector2< double > FVector2D
Definition MathFwd.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 GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
if(Failed) console_printf("Failed.\n")
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Engine.Build.cs:7
Definition Archive.h:1208
Definition UnrealType.h:174
Definition AnimationRuntime.h:74
Definition ArrayView.h:139
Definition Array.h:670
Definition EnumAsByte.h:22
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition ContainerAllocationPolicies.h:894
Definition BlendSpace.h:30
virtual void MakeCache(TObjectPtr< UCachedAnalysisProperties > &Cache, UBlendSpace *BlendSpace)
Definition BlendSpace.h:35
virtual void InitializeFromCache(TObjectPtr< UCachedAnalysisProperties > Cache)
Definition BlendSpace.h:34
Definition AnimSequenceBase.h:37
Definition AnimSequence.h:203
Definition AnimationAsset.h:1020
Definition BlendProfile.h:132
Definition BlendSpace.h:467
virtual float GetPlayLength() const override
Definition BlendSpace.h:492
virtual EBlendSpaceAxis GetAxisToScale() const
Definition BlendSpace.h:705
static ENGINE_API bool IsSingleFrameBlendingIndexInBounds(const FBlendSample &BlendSample)
float TargetWeightInterpolationSpeedPerSec
Definition BlendSpace.h:794
Definition MirrorDataTable.h:102
Definition Object.h:95
Definition Skeleton.h:295
Definition BlendSpace.h:453
Type
Definition BlendSpace.h:455
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition AnimationAsset.h:850
Definition AnimationAsset.h:267
Definition AnimInstanceProxy.h:144
Definition AnimNotifyQueue.h:161
Definition AnimationAsset.h:411
Definition AnimationPoseData.h:16
Definition AnimationAsset.h:209
Definition BlendSpace.h:114
float GetRange() const
Definition BlendSpace.h:150
float GetGridSize() const
Definition BlendSpace.h:155
Definition AnimationAsset.h:122
Definition BlendSpace.h:165
bool operator==(const FBlendSample &Other) const
Definition BlendSpace.h:225
FVector SampleValue
Definition BlendSpace.h:175
FBlendSample(class UAnimSequence *InAnim, FVector InValue, bool bInIsSnapped, bool bInIsValid)
Definition BlendSpace.h:213
FBlendSample()
Definition BlendSpace.h:201
Definition BlendSpace.h:68
Definition BlendSpace.h:332
void Empty()
Definition BlendSpace.h:341
bool IsEmpty() const
Definition BlendSpace.h:347
Definition BlendSpace.h:238
Definition BlendSpace.h:256
Definition BlendSpace.h:288
Definition AnimCurveTypes.h:1041
Definition BoneContainer.h:192
Definition BoneReference.h:14
Definition BoneIndices.h:63
Definition BonePose.h:347
Definition BlendSpace.h:377
Definition BlendSpace.h:403
Definition BlendSpace.h:80
static UE_FORCEINLINE_HINT bool IsNearlyEqual(float A, float B, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:388
Definition BlendSpace.h:421
void Initialize(const USkeleton *Skeleton)
Definition BlendSpace.h:445
Definition AnimNodeBase.h:479
Definition UnrealType.h:6865
Definition ResourceSize.h:31
Definition BoneIndices.h:79
Definition BlendSpace.h:312
FWeightedBlendSample(int32 Index=INDEX_NONE, float Weight=0)
Definition BlendSpace.h:316
Definition ObjectPtr.h:488