UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FAnimNode_Base Struct Reference

#include <AnimNodeBase.h>

+ Inheritance diagram for FAnimNode_Base:

Public Member Functions

virtual ENGINE_API void Initialize_AnyThread (const FAnimationInitializeContext &Context)
 
virtual ENGINE_API void CacheBones_AnyThread (const FAnimationCacheBonesContext &Context)
 
virtual ENGINE_API void Update_AnyThread (const FAnimationUpdateContext &Context)
 
virtual ENGINE_API void Evaluate_AnyThread (FPoseContext &Output)
 
virtual ENGINE_API void EvaluateComponentSpace_AnyThread (FComponentSpacePoseContext &Output)
 
virtual void GatherDebugData (FNodeDebugData &DebugData)
 
virtual bool CanUpdateInWorkerThread () const
 
virtual bool HasPreUpdate () const
 
virtual void PreUpdate (const UAnimInstance *InAnimInstance)
 
virtual bool NeedsDynamicReset () const
 
virtual ENGINE_API void ResetDynamics (ETeleportType InTeleportType)
 
virtual void PostCompile (const class USkeleton *InSkeleton)
 
virtual bool NeedsOnInitializeAnimInstance () const
 
virtual ~FAnimNode_Base ()
 
virtual void ResetDynamics ()
 
virtual bool WantsSkippedUpdates () const
 
virtual void OnUpdatesSkipped (TArrayView< const FAnimationUpdateContext * > SkippedUpdateContexts)
 
virtual void OverrideAsset (class UAnimationAsset *NewAsset)
 
ENGINE_API const FExposedValueHandlerGetEvaluateGraphExposedInputs () const
 
void SetExposedValueHandler (const FExposedValueHandler *Handler)
 
int32 GetNodeIndex () const
 
const IAnimClassInterfaceGetAnimClassInterface () const
 

Protected Member Functions

template<typename DataType >
const DataType & GetData (UE::Anim::FNodeDataId InId, const UObject *InObject=nullptr) const
 
template<typename DataType >
DataType * GetInstanceDataPtr (UE::Anim::FNodeDataId InId, UObject *InObject=nullptr)
 
ENGINE_API bool IsLODEnabled (FAnimInstanceProxy *AnimInstanceProxy)
 
virtual int32 GetLODThreshold () const
 
virtual ENGINE_API void OnInitializeAnimInstance (const FAnimInstanceProxy *InProxy, const UAnimInstance *InAnimInstance)
 

Friends

struct FAnimInstanceProxy
 
class IAnimClassInterface
 
class UAnimBlueprintGeneratedClass
 
struct UE::Anim::FNodeDataId
 
struct UE::Anim::FNodeFunctionCaller
 
class UAnimGraphNode_Base
 
struct FPoseLinkBase
 

Detailed Description

This is the base of all runtime animation nodes

To create a new animation node: Create a struct derived from FAnimNode_Base - this is your runtime node Create a class derived from UAnimGraphNode_Base, containing an instance of your runtime node as a member - this is your visual/editor-only node

Constructor & Destructor Documentation

◆ ~FAnimNode_Base()

virtual FAnimNode_Base::~FAnimNode_Base ( )
inlinevirtual

Member Function Documentation

◆ CacheBones_AnyThread()

◆ CanUpdateInWorkerThread()

virtual bool FAnimNode_Base::CanUpdateInWorkerThread ( ) const
inlinevirtual

Whether this node can run its Update() call on a worker thread. This is called on the game thread. If any node in a graph returns false from this function, then ALL nodes will update on the game thread.

◆ Evaluate_AnyThread()

void FAnimNode_Base::Evaluate_AnyThread ( FPoseContext Output)
virtual

◆ EvaluateComponentSpace_AnyThread()

void FAnimNode_Base::EvaluateComponentSpace_AnyThread ( FComponentSpacePoseContext Output)
virtual

Called to evaluate component-space bone transforms according to the weights set up in Update(). You should implement either Evaluate or EvaluateComponentSpace, but not both of these. This can be called on any thread.

Parameters
OutputOutput structure to write pose or curve data to. Also provides access to relevant data as a context.

Reimplemented in FAnimNode_MeshSpaceRefPose, FAnimNode_SkeletalControlBase, and FAnimNode_ConvertLocalToComponentSpace.

◆ GatherDebugData()

virtual void FAnimNode_Base::GatherDebugData ( FNodeDebugData DebugData)
inlinevirtual

Called to gather on-screen debug data. This is called on the game thread.

Parameters
DebugDataDebug data structure used to output any relevant data

Reimplemented in FAnimNode_AimOffsetLookAt, FAnimNode_ApplyAdditive, FAnimNode_BlendBoneByChannel, FAnimNode_BlendListBase, FAnimNode_BlendSpaceEvaluator, FAnimNode_BlendSpaceGraphBase, FAnimNode_BlendSpacePlayerBase, FAnimNode_CallFunction, FAnimNode_CopyPoseFromMesh, FAnimNode_CurveSource, FAnimNode_LayeredBoneBlend, FAnimNode_MakeDynamicAdditive, FAnimNode_MirrorBase, FAnimNode_ModifyCurve, FAnimNode_MultiWayBlend, FAnimNode_PoseBlendNode, FAnimNode_PoseByName, FAnimNode_PoseDriver, FAnimNode_PoseHandler, FAnimNode_PoseSnapshot, FAnimNode_RandomPlayer, FAnimNode_RefPose, FAnimNode_RotateRootBone, FAnimNode_RotationOffsetBlendSpace, FAnimNode_SequenceEvaluatorBase, FAnimNode_Slot, FAnimNode_TwoWayBlend, FAnimNode_AnimDynamics, FAnimNode_ApplyLimits, FAnimNode_BoneDrivenController, FAnimNode_CCDIK, FAnimNode_Constraint, FAnimNode_CopyBone, FAnimNode_CopyBoneDelta, FAnimNode_Fabrik, FAnimNode_HandIKRetargeting, FAnimNode_LegIK, FAnimNode_LookAt, FAnimNode_ModifyBone, FAnimNode_ObserveBone, FAnimNode_ResetRoot, FAnimNode_RigidBody, FAnimNode_RotationMultiplier, FAnimNode_ScaleChainLength, FAnimNode_SplineIK, FAnimNode_SpringBone, FAnimNode_Trail, FAnimNode_TwistCorrectiveNode, FAnimNode_TwoBoneIK, FAnimNode_ApplyMeshSpaceAdditive, FAnimNode_DeadBlending, FAnimNode_Inertialization, FAnimNode_LinkedAnimGraph, FAnimNode_LinkedInputPose, FAnimNode_Root, FAnimNode_SaveCachedPose, FAnimNode_SequencePlayerBase, FAnimNode_StateMachine, FAnimNode_TransitionPoseEvaluator, FAnimNode_TransitionResult, FAnimNode_UseCachedPose, FAnimNode_ConvertComponentToLocalSpace, FAnimNode_ConvertLocalToComponentSpace, and FAnimNode_LiveLinkPose.

◆ GetAnimClassInterface()

const IAnimClassInterface * FAnimNode_Base::GetAnimClassInterface ( ) const
inline

◆ GetData()

template<typename DataType >
const DataType & FAnimNode_Base::GetData ( UE::Anim::FNodeDataId  InId,
const UObject InObject = nullptr 
) const
inlineprotected

◆ GetEvaluateGraphExposedInputs()

FORCENOINLINE const FExposedValueHandler & FAnimNode_Base::GetEvaluateGraphExposedInputs ( ) const

◆ GetInstanceDataPtr()

template<typename DataType >
DataType * FAnimNode_Base::GetInstanceDataPtr ( UE::Anim::FNodeDataId  InId,
UObject InObject = nullptr 
)
inlineprotected

◆ GetLODThreshold()

virtual int32 FAnimNode_Base::GetLODThreshold ( ) const
inlineprotectedvirtual

Get the LOD level at which this node is enabled. Node is enabled if the current LOD is less than or equal to this threshold.

Reimplemented in FAnimNode_AimOffsetLookAt, FAnimNode_ApplyAdditive, FAnimNode_LayeredBoneBlend, FAnimNode_PoseDriver, FAnimNode_RotationOffsetBlendSpace, FAnimNode_AnimDynamics, FAnimNode_RigidBody, FAnimNode_SkeletalControlBase, and FAnimNode_ApplyMeshSpaceAdditive.

◆ GetNodeIndex()

int32 FAnimNode_Base::GetNodeIndex ( ) const
inline

◆ HasPreUpdate()

virtual bool FAnimNode_Base::HasPreUpdate ( ) const
inlinevirtual

Override this to indicate that PreUpdate() should be called on the game thread (usually to gather non-thread safe data) before Update() is called. Note that this is called at load on the UAnimInstance CDO to avoid needing to call this at runtime. This is called on the game thread.

Reimplemented in FAnimNode_LiveLinkPose, FAnimNode_CopyPoseFromMesh, FAnimNode_CurveSource, FAnimNode_PoseSnapshot, FAnimNode_AnimDynamics, FAnimNode_RigidBody, and FAnimNode_SpringBone.

◆ Initialize_AnyThread()

void FAnimNode_Base::Initialize_AnyThread ( const FAnimationInitializeContext Context)
virtual

Called when the node first runs. If the node is inside a state machine or cached pose branch then this can be called multiple times. This can be called on any thread.

Parameters
ContextContext structure providing access to relevant data

Reimplemented in FAnimNode_AimOffsetLookAt, FAnimNode_ApplyAdditive, FAnimNode_BlendBoneByChannel, FAnimNode_BlendListBase, FAnimNode_BlendSpaceGraphBase, FAnimNode_BlendSpacePlayerBase, FAnimNode_CallFunction, FAnimNode_CopyPoseFromMesh, FAnimNode_CurveSource, FAnimNode_LayeredBoneBlend, FAnimNode_MakeDynamicAdditive, FAnimNode_MirrorBase, FAnimNode_ModifyCurve, FAnimNode_MultiWayBlend, FAnimNode_PoseBlendNode, FAnimNode_PoseByName, FAnimNode_PoseDriver, FAnimNode_PoseHandler, FAnimNode_RandomPlayer, FAnimNode_RotateRootBone, FAnimNode_RotationOffsetBlendSpace, FAnimNode_SequenceEvaluatorBase, FAnimNode_Slot, FAnimNode_TwoWayBlend, FAnimNode_AnimDynamics, FAnimNode_Fabrik, FAnimNode_LegIK, FAnimNode_LookAt, FAnimNode_RigidBody, FAnimNode_ScaleChainLength, FAnimNode_SkeletalControlBase, FAnimNode_SpringBone, FAnimNode_Trail, FAnimNode_TwistCorrectiveNode, FAnimNode_TwoBoneIK, FAnimNode_ApplyMeshSpaceAdditive, FAnimNode_AssetPlayerBase, FAnimNode_DeadBlending, FAnimNode_Inertialization, FAnimNode_LinkedAnimGraph, FAnimNode_Root, FAnimNode_SaveCachedPose, FAnimNode_SequencePlayerBase, FAnimNode_StateMachine, FAnimNode_TransitionPoseEvaluator, FAnimNode_TransitionResult, FAnimNode_UseCachedPose, FAnimNode_ConvertComponentToLocalSpace, FAnimNode_ConvertLocalToComponentSpace, and FAnimNode_LiveLinkPose.

◆ IsLODEnabled()

bool FAnimNode_Base::IsLODEnabled ( FAnimInstanceProxy AnimInstanceProxy)
protected

return true if enabled, otherwise, return false. This is utility function that can be used per node level

◆ NeedsDynamicReset()

virtual bool FAnimNode_Base::NeedsDynamicReset ( ) const
inlinevirtual

For nodes that implement some kind of simulation, return true here so ResetDynamics() gets called when things like teleports, time skips etc. occur that might require special handling. Note that this is called at load on the UAnimInstance CDO to avoid needing to call this at runtime. This is called on the game thread.

Reimplemented in FAnimNode_AnimDynamics, FAnimNode_RigidBody, FAnimNode_DeadBlending, and FAnimNode_Inertialization.

◆ NeedsOnInitializeAnimInstance()

virtual bool FAnimNode_Base::NeedsOnInitializeAnimInstance ( ) const
inlinevirtual

For nodes that need some kind of initialization that is not dependent on node relevancy (i.e. it is insufficient or inefficient to use Initialize_AnyThread), return true here. Note that this is called at load on the UAnimInstance CDO to avoid needing to call this at runtime.

Reimplemented in FAnimNode_AimOffsetLookAt, FAnimNode_CallFunction, FAnimNode_ApplyLimits, FAnimNode_ResetRoot, FAnimNode_RigidBody, FAnimNode_SplineIK, FAnimNode_LinkedAnimGraph, and FAnimNode_LinkedAnimLayer.

◆ OnInitializeAnimInstance()

void FAnimNode_Base::OnInitializeAnimInstance ( const FAnimInstanceProxy InProxy,
const UAnimInstance InAnimInstance 
)
protectedvirtual

◆ OnUpdatesSkipped()

virtual void FAnimNode_Base::OnUpdatesSkipped ( TArrayView< const FAnimationUpdateContext * >  SkippedUpdateContexts)
inlinevirtual

◆ OverrideAsset()

virtual void FAnimNode_Base::OverrideAsset ( class UAnimationAsset NewAsset)
inlinevirtual

◆ PostCompile()

virtual void FAnimNode_Base::PostCompile ( const class USkeleton InSkeleton)
inlinevirtual

Called after compilation

◆ PreUpdate()

virtual void FAnimNode_Base::PreUpdate ( const UAnimInstance InAnimInstance)
inlinevirtual

Override this to perform game-thread work prior to non-game thread Update() being called

Reimplemented in FAnimNode_CopyPoseFromMesh, FAnimNode_CurveSource, FAnimNode_PoseSnapshot, FAnimNode_AnimDynamics, FAnimNode_RigidBody, FAnimNode_SpringBone, and FAnimNode_LiveLinkPose.

◆ ResetDynamics() [1/2]

virtual void FAnimNode_Base::ResetDynamics ( )
inlinevirtual

Deprecated functions

◆ ResetDynamics() [2/2]

void FAnimNode_Base::ResetDynamics ( ETeleportType  InTeleportType)
virtual

Called to help dynamics-based updates to recover correctly from large movements/teleports

Reimplemented in FAnimNode_AnimDynamics, FAnimNode_RigidBody, and FAnimNode_Inertialization.

◆ SetExposedValueHandler()

void FAnimNode_Base::SetExposedValueHandler ( const FExposedValueHandler Handler)
inline

◆ Update_AnyThread()

◆ WantsSkippedUpdates()

virtual bool FAnimNode_Base::WantsSkippedUpdates ( ) const
inlinevirtual

Friends And Related Symbol Documentation

◆ FAnimInstanceProxy

◆ FPoseLinkBase

◆ IAnimClassInterface

◆ UAnimBlueprintGeneratedClass

◆ UAnimGraphNode_Base

friend class UAnimGraphNode_Base
friend

◆ UE::Anim::FNodeDataId

◆ UE::Anim::FNodeFunctionCaller


The documentation for this struct was generated from the following files: