7#include "SpringInterpolator.generated.h"
91 const T
Velocity = (1.0f / 6.0f) * (a.Velocity + 2.0f*(b.Velocity + c.Velocity) + d.Velocity);
92 const T
Acceleration = (1.0f / 6.0f) * (a.Acceleration + 2.0f*(b.Acceleration + c.Acceleration) + d.Acceleration);
103#define RK4_SPRING_INTERPOLATOR_MAX_VALUE (1e+16f)
106#define RK4_SPRING_INTERPOLATOR_POSITION_TOLERANCE 0.001f
107#define RK4_SPRING_INTERPOLATOR_VELOCITY_TOLERANCE 0.01f
128 return A.Equals(
B, ErrorTolerance);
184 return State.Position;
204 return State.Velocity;
209 State.Velocity = NewVelocity;
231 State.Velocity = T(0.f);
257 while (NumIterations-- > 0)
272 || !FRK4SpringInterpolatorUtils::IsValidValue(
State.Velocity)
273 || !FRK4SpringInterpolatorUtils::IsValidValue(
State.Position))
280 return State.Position;
322USTRUCT(noexport, BlueprintType)
325 UPROPERTY(EditAnywhere, Category =
"FloatRK4SpringInterpolator")
341USTRUCT(noexport, BlueprintType)
344 UPROPERTY(EditAnywhere, Category =
"VectorRK4SpringInterpolator")
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
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
#define RK4_SPRING_INTERPOLATOR_VELOCITY_TOLERANCE
Definition SpringInterpolator.h:107
#define RK4_SPRING_INTERPOLATOR_POSITION_TOLERANCE
Definition SpringInterpolator.h:106
ENGINE_API float RK4_SPRING_INTERPOLATOR_UPDATE_RATE
Definition AnimInstance.cpp:97
#define RK4_SPRING_INTERPOLATOR_MAX_VALUE
Definition SpringInterpolator.h:103
ENGINE_API int32 RK4_SPRING_INTERPOLATOR_MAX_ITER
Definition AnimInstance.cpp:100
#define UE_KINDA_SMALL_NUMBER
Definition UnrealMathUtility.h:131
uint32 Offset
Definition VulkanMemory.cpp:4033
FExpressionResult Evaluate(const CharType *InExpression, const TTokenDefinitions< CharType > &InTokenDefinitions, const FExpressionGrammar &InGrammar, const TIOperatorEvaluationEnvironment< CharType > &InEnvironment)
Definition ExpressionParser.cpp:728
Definition SpringInterpolator.h:110
Definition SpringInterpolator.h:27
@ false
Definition radaudio_common.h:23
Definition SpringInterpolator.h:291
float LastPosition
Definition SpringInterpolator.h:337
FRK4SpringConstants SpringConstants
Definition SpringInterpolator.h:335
float TimeRemaining
Definition SpringInterpolator.h:334
bool bIsInMotion
Definition SpringInterpolator.h:333
FFloatRK4SpringInterpolator()
Definition SpringInterpolator.h:296
FFloatRK4SpringInterpolator(const Super &Other)
Definition SpringInterpolator.h:300
bool bIsInitialized
Definition SpringInterpolator.h:332
float StiffnessConstant
Definition SpringInterpolator.h:326
RK4Integrator::FRK4State< float > State
Definition SpringInterpolator.h:338
float DampeningRatio
Definition SpringInterpolator.h:330
static UE_FORCEINLINE_HINT bool IsNearlyEqual(float A, float B, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:388
Definition SpringInterpolator.h:10
FRK4SpringConstants(float InSpringStiffness, float InDampingConstant)
Definition SpringInterpolator.h:19
float SpringStiffness
Definition SpringInterpolator.h:11
float DampingConstant
Definition SpringInterpolator.h:12
FRK4SpringConstants()
Definition SpringInterpolator.h:14
Definition SpringInterpolator.h:134
float TimeRemaining
Definition SpringInterpolator.h:141
void SetVelocity(const T &NewVelocity)
Definition SpringInterpolator.h:207
bool IsPositionEqualTo(const T &OtherPosition) const
Definition SpringInterpolator.h:218
bool bIsInitialized
Definition SpringInterpolator.h:139
bool bIsInMotion
Definition SpringInterpolator.h:140
bool IsVelocityZero() const
Definition SpringInterpolator.h:223
T GetLastDeltaPosition() const
Definition SpringInterpolator.h:197
void SetDefaultSpringConstants(const float &InSpringStiffness, const float &InDampeningRatio=1.f)
Definition SpringInterpolator.h:158
T Update(const T &InTargetPosition, const float &InDeltaTime)
Definition SpringInterpolator.h:236
void OffsetPosition(const T &Offset)
Definition SpringInterpolator.h:192
T Update(const T &InNewPosition, const T &InTargetPosition, const float &InDeltaTime)
Definition SpringInterpolator.h:283
void Reset(const T &DefaultPosition=T(0.f))
Definition SpringInterpolator.h:228
T GetVelocity() const
Definition SpringInterpolator.h:202
float DampeningRatio
Definition SpringInterpolator.h:137
FRK4SpringConstants SpringConstants
Definition SpringInterpolator.h:142
void SetPosition(const T &NewPosition)
Definition SpringInterpolator.h:187
float StiffnessConstant
Definition SpringInterpolator.h:136
void SetSpringConstants(const float &InSpringStiffness, const float &InDampeningRatio=1.f)
Definition SpringInterpolator.h:165
float GetDefaultStiffnessConstant() const
Definition SpringInterpolator.h:172
bool IsInMotion() const
Definition SpringInterpolator.h:177
T GetPosition() const
Definition SpringInterpolator.h:182
FRK4SpringInterpolator(float InSpringStiffness=1.f, float InDampeningRatio=1.f)
Definition SpringInterpolator.h:148
RK4Integrator::FRK4State< T > State
Definition SpringInterpolator.h:145
T LastPosition
Definition SpringInterpolator.h:144
void OffsetVelocity(const T &Offset)
Definition SpringInterpolator.h:213
Definition SpringInterpolator.h:306
FVectorRK4SpringInterpolator(const Super &Other)
Definition SpringInterpolator.h:315
FVectorRK4SpringInterpolator()
Definition SpringInterpolator.h:311
Definition SpringInterpolator.h:47
FRK4StateDerivative(T InVelocity, T InAcceleration)
Definition SpringInterpolator.h:56
T Velocity
Definition SpringInterpolator.h:48
FRK4StateDerivative()
Definition SpringInterpolator.h:51
T Acceleration
Definition SpringInterpolator.h:49
Definition SpringInterpolator.h:30
T Position
Definition SpringInterpolator.h:31
FRK4State(T InPosition, T InVelocity)
Definition SpringInterpolator.h:39
FRK4State()
Definition SpringInterpolator.h:34
T Velocity
Definition SpringInterpolator.h:32