UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AnimNode_Fabrik.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 "BoneIndices.h"
8#include "BoneContainer.h"
9#include "BonePose.h"
11#include "AnimNode_Fabrik.generated.h"
12
14class USkeletalMeshComponent;
15
20USTRUCT(BlueprintInternalUseOnly)
22{
24
25
26 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = EndEffector, meta = (PinShownByDefault))
27 FTransform EffectorTransform;
28
30 UPROPERTY(EditAnywhere, Category = EndEffector)
31 FBoneSocketTarget EffectorTarget;
32
34 UPROPERTY(EditAnywhere, Category = Solver)
36
38 UPROPERTY(EditAnywhere, Category = Solver)
40
42 UPROPERTY(EditAnywhere, Category = Solver)
43 float Precision;
44
46 UPROPERTY(EditAnywhere, Category = Solver)
47 int32 MaxIterations;
48
50 UPROPERTY(EditAnywhere, Category = EndEffector)
51 TEnumAsByte<enum EBoneControlSpace> EffectorTransformSpace;
52
53 UPROPERTY(EditAnywhere, Category = EndEffector)
54 TEnumAsByte<enum EBoneRotationSource> EffectorRotationSource;
55
56#if WITH_EDITORONLY_DATA
58 UPROPERTY(EditAnywhere, Category = Solver)
60
62 UPROPERTY()
64#endif
65
66public:
68
69 // FAnimNode_Base interface
70 ANIMGRAPHRUNTIME_API virtual void GatherDebugData(FNodeDebugData& DebugData) override;
71 ANIMGRAPHRUNTIME_API virtual void Initialize_AnyThread(const FAnimationInitializeContext& Context) override;
72 // End of FAnimNode_Base interface
73
74 // FAnimNode_SkeletalControlBase interface
75 ANIMGRAPHRUNTIME_API virtual void EvaluateSkeletalControl_AnyThread(FComponentSpacePoseContext& Output, TArray<FBoneTransform>& OutBoneTransforms) override;
76 ANIMGRAPHRUNTIME_API virtual bool IsValidToEvaluate(const USkeleton* Skeleton, const FBoneContainer& RequiredBones) override;
77 // End of FAnimNode_SkeletalControlBase interface
78
79 ANIMGRAPHRUNTIME_API virtual void ConditionalDebugDraw(FPrimitiveDrawInterface* PDI, USkeletalMeshComponent* PreviewSkelMeshComp) const;
80
81private:
82 // FAnimNode_SkeletalControlBase interface
83 ANIMGRAPHRUNTIME_API virtual void InitializeBoneReferences(const FBoneContainer& RequiredBones) override;
84 // End of FAnimNode_SkeletalControlBase interface
85
86 // Convenience function to get current (pre-translation iteration) component space location of bone by bone index
87 FVector GetCurrentLocation(FCSPose<FCompactPose>& MeshBases, const FCompactPoseBoneIndex& BoneIndex);
89#if WITH_EDITORONLY_DATA
90 // Cached CS location when in editor for debug drawing
92#endif
93};
EBoneControlSpace
Definition AnimTypes.h:60
EBoneRotationSource
Definition AnimTypes.h:75
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
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
Definition PrimitiveDrawInterface.h:19
Definition Array.h:670
Definition EnumAsByte.h:22
Definition Skeleton.h:295
Definition AnimNode_Fabrik.h:22
Definition AnimNode_SkeletalControlBase.h:22
Definition AnimNodeBase.h:324
Definition BoneContainer.h:192
Definition BoneReference.h:14
Definition BoneSocketReference.h:94
Definition BonePose.h:408
Definition BoneIndices.h:63
Definition AnimNodeBase.h:600
Definition AnimNodeBase.h:642