UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AnimNode_Trail.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 "BoneContainer.h"
8#include "Curves/CurveFloat.h"
9#include "BonePose.h"
12#include "AnimNode_Trail.generated.h"
13
14class USkeletalMeshComponent;
15
16// in the future, we might use this for stretch set up as well
17// for now this is unserializable, and transient only
23
24USTRUCT()
26{
28
30 : LimitMin(-180, -180, -180)
31 , LimitMax(+180, +180, +180)
32 {}
33
34 UPROPERTY(EditAnywhere, Category = Angular, meta = (UIMin = "-180", UIMax = "180", ClampMin = "-180", ClampMax = "180"))
35 FVector LimitMin;
36
37 UPROPERTY(EditAnywhere, Category = Angular, meta = (UIMin = "-180", UIMax = "180", ClampMin = "-180", ClampMax = "180"))
38 FVector LimitMax;
39};
40
45USTRUCT(BlueprintInternalUseOnly)
47{
49
50
51 FTransform OldBaseTransform;
52
54 UPROPERTY(EditAnywhere, Category=Trail)
55 FBoneReference TrailBone;
56
58 UPROPERTY(EditAnywhere, Category = Trail, meta = (ClampMin = "2", UIMin = "2"))
60
62 UPROPERTY(EditAnywhere, Category=Trail)
63 TEnumAsByte<EAxis::Type> ChainBoneAxis;
64
66 UPROPERTY(EditAnywhere, Category=Trail)
67 uint8 bInvertChainBoneAxis:1;
68
70 UPROPERTY(EditAnywhere, Category=Limit)
71 uint8 bLimitStretch:1;
72
74 UPROPERTY(EditAnywhere, Category = Limit)
75 uint8 bLimitRotation:1;
76
78 UPROPERTY(EditAnywhere, Category=Limit)
79 uint8 bUsePlanarLimit:1;
80
82 UPROPERTY(EditAnywhere, Category=Velocity)
83 uint8 bActorSpaceFakeVel:1;
84
86 UPROPERTY(EditAnywhere, Category = Rotation)
87 uint8 bReorientParentToChild:1;
88
90 uint8 bHadValidStrength:1;
91
92#if WITH_EDITORONLY_DATA
94 UPROPERTY(EditAnywhere, Category = Debug)
96
98 UPROPERTY(EditAnywhere, Category = Debug)
100
102 UPROPERTY(EditAnywhere, Category = Debug)
104
106 UPROPERTY(EditAnywhere, Category = Debug)
108
111
113 UPROPERTY(EditAnywhere, Category = Debug)
114 float DebugLifeTime;
115
117 UPROPERTY()
119#endif // WITH_EDITORONLY_DATA
120
122 UPROPERTY(EditAnywhere, Category = Limit)
123 float MaxDeltaTime;
124
125 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Trail, meta = (PinHiddenByDefault))
126 float RelaxationSpeedScale;
127
129 UPROPERTY(EditAnywhere, Category=Trail, meta=(CustomizeProperty))
130 FRuntimeFloatCurve TrailRelaxationSpeed;
131
132 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Trail)
133 FInputScaleBiasClamp RelaxationSpeedScaleInputProcessor;
134
135 UPROPERTY(EditAnywhere, EditFixedSize, Category = Limit, meta = (EditCondition =bLimitRotation))
136 TArray<FRotationLimit> RotationLimits;
137
138 UPROPERTY(EditAnywhere, BlueprintReadWrite, EditFixedSize, Category = Limit, meta = (PinHiddenByDefault, EditCondition = bLimitRotation))
139 TArray<FVector> RotationOffsets;
140
142 UPROPERTY(EditAnywhere, Category=Limit, meta = (EditCondition = bUsePlanarLimit))
144
146 UPROPERTY(EditAnywhere, Category=Limit)
147 float StretchLimit;
148
150 UPROPERTY(EditAnywhere, Category=Velocity, meta = (PinHiddenByDefault))
151 FVector FakeVelocity;
152
154 UPROPERTY(EditAnywhere, Category=Velocity)
155 FBoneReference BaseJoint;
156
157#if WITH_EDITORONLY_DATA
158 UPROPERTY()
160#endif // WITH_EDITORONLY_DATA
161 /* How to set last bone rotation. It copies from previous joint if alpha is 0.f, or 1.f will use animated pose
162 * This alpha dictates the blend between parent joint and animated pose, and how much you'd like to use animated pose for
163 */
164 UPROPERTY(EditAnywhere, Category = Rotation, meta = (EditCondition = bReorientParentToChild))
165 float LastBoneRotationAnimAlphaBlend;
166
168 float ThisTimstep;
169
171 TArray<FVector> TrailBoneLocations;
172
174 TArray<FPerJointTrailSetup> PerJointTrailData;
175
176#if WITH_EDITORONLY_DATA
180#endif // WITH_EDITORONLY_DATA
181
183
184 // FAnimNode_Base interface
185 ANIMGRAPHRUNTIME_API virtual void Initialize_AnyThread(const FAnimationInitializeContext& Context) override;
186 ANIMGRAPHRUNTIME_API virtual void UpdateInternal(const FAnimationUpdateContext& Context) override;
187 ANIMGRAPHRUNTIME_API virtual void GatherDebugData(FNodeDebugData& DebugData) override;
188 // End of FAnimNode_Base interface
189
190 // FAnimNode_SkeletalControlBase interface
191 ANIMGRAPHRUNTIME_API virtual void EvaluateSkeletalControl_AnyThread(FComponentSpacePoseContext& Output, TArray<FBoneTransform>& OutBoneTransforms) override;
192 ANIMGRAPHRUNTIME_API virtual bool IsValidToEvaluate(const USkeleton* Skeleton, const FBoneContainer& RequiredBones) override;
193 // End of FAnimNode_SkeletalControlBase interface
194
196
197#if WITH_EDITOR
199#endif // WITH_EDITOR
200private:
201 // FAnimNode_SkeletalControlBase interface
202 ANIMGRAPHRUNTIME_API virtual void InitializeBoneReferences(const FBoneContainer& RequiredBones) override;
203 // End of FAnimNode_SkeletalControlBase interface
204
205 FVector GetAlignVector(EAxis::Type AxisOption, bool bInvert);
206
207 // skeleton index
208 TArray<int32> ChainBoneIndices;
209};
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 GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Array.h:670
Definition EnumAsByte.h:22
Definition Skeleton.h:295
Definition Axis.h:9
Type
Definition Axis.h:11
Definition AnimNode_SkeletalControlBase.h:22
Definition AnimNode_Trail.h:47
Definition AnimNode_AnimDynamics.h:188
Definition AnimNodeBase.h:324
Definition AnimNodeBase.h:354
Definition BoneContainer.h:192
Definition BoneReference.h:14
Definition AnimNodeBase.h:600
Definition InputScaleBias.h:74
Definition AnimNodeBase.h:642
Definition AnimNode_Trail.h:19
float TrailRelaxationSpeedPerSecond
Definition AnimNode_Trail.h:21
Definition AnimNode_Trail.h:26
Definition CurveFloat.h:13