UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AnimSingleNodeInstanceProxy.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"
11#include "AnimSingleNodeInstanceProxy.generated.h"
12
15
20USTRUCT(BlueprintInternalUseOnly)
22{
24
26
27 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Links)
28 FPoseLink SourcePose;
29
30 // Slot to use if we are evaluating a montage
31 FName ActiveMontageSlot;
32
33 // FAnimNode_Base interface
34 ENGINE_API virtual void Evaluate_AnyThread(FPoseContext& Output) override;
35 ENGINE_API virtual void Update_AnyThread(const FAnimationUpdateContext& Context) override;
36 // End of FAnimNode_Base interface
37
41};
42
44USTRUCT()
46{
47 friend struct FAnimNode_SingleNode;
48
50
51public:
53 {
54#if WITH_EDITOR
56 bIgnoreRootLock = false;
57 bIgnoreRootMotion = false;
58#endif
59 }
60
63 , CurrentAsset(nullptr)
64 , MirrorDataTable(nullptr)
65 , BlendSpacePosition(0.0f, 0.0f, 0.0f)
66 , CurrentTime(0.0f)
67 , DeltaTimeRecord()
70#endif
71 , PlayRate(1.f)
72 , bLooping(true)
73 , bPlaying(true)
74 , bReverse(false)
75 {
76 SingleNode.Proxy = this;
77
78#if WITH_EDITOR
80 bIgnoreRootLock = false;
81 bIgnoreRootMotion = false;
82#endif
83 }
84
86
87 ENGINE_API virtual void Initialize(UAnimInstance* InAnimInstance) override;
88 ENGINE_API virtual bool Evaluate(FPoseContext& Output) override;
89 ENGINE_API virtual void UpdateAnimationNode(const FAnimationUpdateContext& InContext) override;
90 ENGINE_API virtual void PostUpdate(UAnimInstance* InAnimInstance) const override;
91 ENGINE_API virtual void PreUpdate(UAnimInstance* InAnimInstance, float DeltaSeconds) override;
92 ENGINE_API virtual void InitializeObjects(UAnimInstance* InAnimInstance) override;
93 ENGINE_API virtual void ClearObjects() override;
94
95 void SetPlaying(bool bIsPlaying)
96 {
97 bPlaying = bIsPlaying;
98 }
99
100 bool IsPlaying() const
101 {
102 return bPlaying;
103 }
104
105 bool IsReverse() const
106 {
107 return bReverse;
108 }
109
110 void SetLooping(bool bIsLooping)
111 {
112 bLooping = bIsLooping;
113 }
114
115 bool IsLooping() const
116 {
117 return bLooping;
118 }
119
121 {
122 WeightInfo.Reset();
123 }
124
125 ENGINE_API virtual void SetAnimationAsset(UAnimationAsset* NewAsset, USkeletalMeshComponent* MeshComponent, bool bIsLooping, float InPlayRate);
126
127 ENGINE_API void UpdateBlendspaceSamples(FVector InBlendInput);
128
130 {
131 if (InCurrentTime != CurrentTime)
132 {
133 // If the current time is changed externally then our record of where we are in relation to markers will be
134 // out of sync, so reset it and it will be updated when necessary.
135 MarkerTickRecord.Reset();
136 }
137 CurrentTime = InCurrentTime;
138 }
139
140 float GetCurrentTime() const
141 {
142 return CurrentTime;
143 }
144
145 float GetPlayRate() const
146 {
147 return PlayRate;
148 }
149
151 {
152 PlayRate = InPlayRate;
153 }
154
156 {
157 return BlendFilter.GetFilterLastOutput();
158 }
159
160 ENGINE_API void SetReverse(bool bInReverse);
161
163 ENGINE_API void SetBlendSpacePosition(const FVector& InPosition);
164
168 ENGINE_API void GetBlendSpaceState(FVector& OutPosition, FVector& OutFilteredPosition) const;
169
174 ENGINE_API float GetBlendSpaceLength() const;
175
176#if WITH_EDITOR
178 {
180 }
181#endif
182
183 ENGINE_API void SetMirrorDataTable(const UMirrorDataTable* InMirrorDataTable);
184
185 ENGINE_API const UMirrorDataTable* GetMirrorDataTable();
186
187#if WITH_EDITORONLY_DATA
189#endif // WITH_EDITORONLY_DATA
190
191 ENGINE_API void SetPreviewCurveOverride(const FName& PoseName, float Value, bool bRemoveIfZero);
192
193 // Update internal weight structures for supplied slot name
194 ENGINE_API void UpdateMontageWeightForSlot(const FName CurrentSlotNodeName, float InGlobalNodeWeight);
195
196 // Set the montage slot to preview
197 ENGINE_API void SetMontagePreviewSlot(FName PreviewSlot);
198
199private:
200 ENGINE_API void InternalBlendSpaceEvaluatePose(class UBlendSpace* BlendSpace, TArray<FBlendSampleData>& BlendSampleDataCache, FPoseContext& OutContext);
201
202protected:
203#if WITH_EDITOR
207
209 bool bIgnoreRootLock;
210
213#endif
214
217
220
223
226
227private:
229 FVector BlendSpacePosition;
230
232 TArray<FBlendSampleData> BlendSampleData;
233
235 FBlendFilter BlendFilter;
236
238 FSlotNodeWeightInfo WeightInfo;
239
241 float CurrentTime;
242
243 FDeltaTimeRecord DeltaTimeRecord;
244
245#if WITH_EDITORONLY_DATA
247#endif
248
250 FMarkerTickRecord MarkerTickRecord;
251
252 float PlayRate;
253 bool bLooping;
254 bool bPlaying;
255 bool bReverse;
256};
#define WITH_EDITORONLY_DATA
Definition CoreMiscDefines.h:24
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
if(Failed) console_printf("Failed.\n")
Definition NameTypes.h:617
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition AnimInstance.h:353
Definition AnimationAsset.h:1020
Definition BlendSpace.h:467
Definition MirrorDataTable.h:102
@ false
Definition radaudio_common.h:23
Definition AnimInstanceProxy.h:144
Definition AnimNodeBase.h:853
virtual void PreUpdate(const UAnimInstance *InAnimInstance)
Definition AnimNodeBase.h:922
Definition AnimSingleNodeInstanceProxy.h:22
Definition AnimSingleNodeInstanceProxy.h:46
void SetPlaying(bool bIsPlaying)
Definition AnimSingleNodeInstanceProxy.h:95
void ResetWeightInfo()
Definition AnimSingleNodeInstanceProxy.h:120
float GetCurrentTime() const
Definition AnimSingleNodeInstanceProxy.h:140
const UMirrorDataTable * MirrorDataTable
Definition AnimSingleNodeInstanceProxy.h:222
void SetLooping(bool bIsLooping)
Definition AnimSingleNodeInstanceProxy.h:110
UAnimationAsset * CurrentAsset
Definition AnimSingleNodeInstanceProxy.h:219
float GetPlayRate() const
Definition AnimSingleNodeInstanceProxy.h:145
bool IsPlaying() const
Definition AnimSingleNodeInstanceProxy.h:100
void SetCurrentTime(float InCurrentTime)
Definition AnimSingleNodeInstanceProxy.h:129
FAnimSingleNodeInstanceProxy(UAnimInstance *InAnimInstance)
Definition AnimSingleNodeInstanceProxy.h:61
void SetPlayRate(float InPlayRate)
Definition AnimSingleNodeInstanceProxy.h:150
TMap< FName, float > PreviewCurveOverride
Definition AnimSingleNodeInstanceProxy.h:216
FAnimNode_SingleNode SingleNode
Definition AnimSingleNodeInstanceProxy.h:225
bool IsReverse() const
Definition AnimSingleNodeInstanceProxy.h:105
FVector GetFilterLastOutput()
Definition AnimSingleNodeInstanceProxy.h:155
bool IsLooping() const
Definition AnimSingleNodeInstanceProxy.h:115
Definition AnimNodeBase.h:354
Definition AnimationAsset.h:209
Definition AnimationAsset.h:98
Definition AnimationAsset.h:67
Definition AnimNodeBase.h:479
Definition AnimTypes.h:611