UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AnimPhysicsSolver.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3// This code is based upon and adapted to Unreal from the code
4// provided in the Sandbox project here:
5// https://github.com/melax/sandbox
6
7// The license for Sandbox is reproduced below:
8
9/*
10 Copyright (c) 2014 Stan Melax
11
12 Permission is hereby granted, free of charge, to any person obtaining a copy
13 of this software and associated documentation files (the "Software"), to deal
14 in the Software without restriction, including without limitation the rights
15 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16 copies of the Software, and to permit persons to whom the Software is
17 furnished to do so, subject to the following conditions:
18
19 The above copyright notice and this permission notice shall be included in all
20 copies or substantial portions of the Software.
21
22 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28 SOFTWARE.
29*/
30
31#pragma once
32
33#include "CoreMinimal.h"
34#include "Stats/Stats.h"
36
37#include "AnimPhysicsSolver.generated.h"
38
47
48class FAnimPhys;
49
51{
52 // Added bias for angular joints
53 inline const float JointBiasFactor = 0.3f;
54
55 // Damping for linear momentum (1 = critically damped)
56 inline const float LinearDamping = 0.7f;
57
58 // Damping for angular momentum (1 = critically damped)
59 inline const float AngularDamping = 0.7f;
60
61 inline const float DefaultSpringConstantLinear = 12.0f;
62 inline const float DefaultSpringConstantAngular = 4.0f;
63}
64
65// Enum for picking current angular twist axis
66UENUM()
68{
69 AxisX,
70 AxisY,
71 AxisZ
72};
73
74UENUM()
76{
77 CoM UMETA(DisplayName="CoM", DisplayValue="CoM", ToolTip="Only limit the center of mass from crossing planes."),
78 CustomSphere UMETA(ToolTip="Use the specified sphere radius to collide with planes."),
79 InnerSphere UMETA(ToolTip="Use the largest sphere that fits entirely within the body extents to collide with planes."),
80 OuterSphere UMETA(ToolTip="Use the smallest sphere that wholely contains the body extents to collide with planes.")
81};
82
84{
88 static ENGINE_API FAnimPhysShape MakeBox(const FVector& Extents);
89
92
97
98 // Vertex positions defining the shape
100
101 // Triangles defining the shape
103
104 // Volume of the shape
105 float Volume;
106
107 // Center of mass for the chape
109};
110
115{
118 float Scale;
119
125
126 FAnimPhysPose(const FVector& InPosition, const FQuat& InOrient, const float& InScale)
129 , Scale(InScale)
130 {}
131
133 : Position(FVector::ZeroVector)
134 , Orientation(FQuat::Identity)
135 , Scale(1.0)
136 {
137
138 }
139
146
148 {
150 }
151
153 {
154 return Position + (Orientation * InPoint);
155 }
156
158 {
159 return FAnimPhysPose(*this *InPose.Position, Orientation * InPose.Orientation);
160 }
161
168};
169
174{
175 public:
178
180
183
185 const FAnimPhysPose& GetPose() const { return Pose; }
186
187 FAnimPhysState& GetState() { return *this; }
188 const FAnimPhysState& GetState() const { return *this; }
189};
190
195{
196 // Scale for the final velocity
198
199 // Current wind speed
201
202 // World space wind direction
204
205 // Mirrors APEX adaption, adds some randomness / billow
207};
208
213{
214 public:
215
217
218 // Spin / Omega for the body
220
221 // Mass of this body
222 float Mass;
223
224 // 1.0f / Mass
226
227 // Mass free inverse tensor (easier to scale mass)
229
230 // Full (with mass) inverse tensor in world space
231 FMatrix InverseWorldSpaceTensor; // Inverse Inertia Tensor rotated into world space
232
234
235 // Maintained state, Start/Prev/Next
242
243 // Whether to use wind forces on this body
245
246 // Per-body wind data (speed, direction etc.)
248
249 // Override angular damping for this body
252
253 // Override linear damping for this body
256
257 // Override gravity scale for this body
259
260 //Use manual gravity override
262
263 //Direct gravity override value
265
266 // Previous motion state (linear/angular momentum)
268
269 // Body center of mass (CoM of all shapes)
271
272 // Collision Data (Only how we interact with planes currently)
274
275 // Radius to use when not using CoM collision mode
277
278 // Shapes contained within this body
280};
281
292
297{
298public:
299
300 // Axis of the limit in world space
302
303 // Rotational impulse
304 float Torque;
305
306 // The required spin required to align the limit
308
309 // Minimum torque this limit can apply
311
312 // Maximum torque this limit can apply
314
315 // Cached spin to torque value that is independant of iterations
317
320
323 ENGINE_API void RemoveBias();
324
327 ENGINE_API void Iter(float DeltaTime);
328
330};
331
333{
334 public:
335
336 // Position of anchor on first object (in first object local space)
338
339 // Position of anchor on second object (in second object local space)
341
342 // Normal along which the limit is applied
344
345 // Target speed needed to solve the limit
347
348 // Target speed of the limit without bias (force added just to solve limit)
350
351 // Minimum force this limit can apply along the normal
353
354 // Maximum force this limit can apply along the normal
356
357 // Sum of impulses applied
359
360 // Cached denominator of the impulse calculation, doesn't change across iterations
362
363 // Cached world space position on body 0
365
366 // Cached world space position on body 1
368
371 const FVector& InNormal = FVector(0.0f, 0.0f, 1.0f), float InTargetSpeed = 0.0f, float InTargetSpeedWithoutBias = 0.0f, const FVector2D& InForceRange = FVector2D(-MAX_flt, MAX_flt));
372
375 ENGINE_API void RemoveBias();
376
379 ENGINE_API void Iter(float DetlaTime);
380
382};
383
385{
386 // Bodies connected by the spring (Or nullptr for world)
389
390 // Extra orientation applied on top of Body0's orientation to the target direction
392
393 // Target in body0 space for the target axis on body1 to reach
395
396 // The axis of body1's orientation to match to the angular target
398
399 // Local space anchor positions (in space of Body0 and Body1 respectively)
402
403 // Spring constant for linear springs
405
406 // Sprint constant for angular springs
408
409 // Whether to apply linear spring force
411
412 // Whether to apply angular spring force
414
417 ENGINE_API void ApplyForces(float DeltaTime);
418};
419
425{
426public:
427
428 // Runtime CVar toggle for detailed/verbose profiling
430
431 // How much of the coriolis force to apply to the sim bodies
433
434 // How much of the centrifugal force to apply to the sim bodies
436
437 // How much of the euler force to apply to the sim bodies
438 static ENGINE_API float EulerAlpha;
439
440 // How much of the simulation frame's angular acceleration to pass onto the sim bodies.
441 static constexpr float AngularAccelerationAlpha = 1.0f;
442
448
453
459
464
471
477
482 static ENGINE_API void ScaleRigidBodyMass(FAnimPhysRigidBody* InOutRigidBody, float Scale); // scales the mass and all relevant inertial properties by multiplier s
483
490
491
501 static ENGINE_API void PhysicsUpdate(float DeltaTime, TArray<FAnimPhysRigidBody*>& Bodies, TArray<FAnimPhysLinearLimit>& LinearLimits, TArray<FAnimPhysAngularLimit>& AngularLimits, TArray<FAnimPhysSpring>& Springs, const FVector& GravityDirection, const FVector& ExternalForce, const FVector& ExternalLinearAcc, const FVector& ExternalAngularAcc, const FVector& ExternalAngularVelocity, int32 NumPreIterations = 8, int32 NumPostIterations = 2);
502
504 // Constraint functions
505
517 static ENGINE_API void ConstrainAlongDirection(float DeltaTime, TArray<FAnimPhysLinearLimit>& LimitContainer, FAnimPhysRigidBody *FirstBody, const FVector& FirstPosition, FAnimPhysRigidBody *SecondBody, const FVector& SecondPosition, const FVector& AxisToConstrain, const FVector2D Limits, float MinimumForce = -MAX_flt, float MaximumForce = MAX_flt);
518
527
539
552
562 static ENGINE_API void ConstrainConeAngle(float DeltaTime, TArray<FAnimPhysAngularLimit>& LimitContainer, FAnimPhysRigidBody* FirstBody, const FVector& Normal0, FAnimPhysRigidBody* SecondBody, const FVector& Normal1, float LimitAngle, float InJointBias); // a hinge is a cone with 0 limitangle
563
569 static ENGINE_API void ConstrainPlanar(float DeltaTime, TArray<FAnimPhysLinearLimit>& LimitContainer, FAnimPhysRigidBody* Body, const FTransform& PlaneTransform);
570
573
576
578 // Spring creation methods
580
581private:
582
588 static FQuat DiffQ(const FQuat& InOrientation, const FMatrix &InInverseTensor, const FVector& InAngularMomentum);
589
596 static FQuat UpdateOrientRK(const FQuat& InOrient, const FMatrix& InInverseTensor, const FVector& InAngularMomentum, float InDeltaTime);
597
601 static void InitializeBodyVelocity(float DeltaTime, FAnimPhysRigidBody *InBody, const FVector& GravityDirection);
602
606 static void CalculateNextPose(float DeltaTime, FAnimPhysRigidBody* InBody);
607
611 static void UpdatePose(FAnimPhysRigidBody* InBody);
612
623 static void ConstrainAngularRangeInternal(float DeltaTime, TArray<FAnimPhysAngularLimit>& LimitContainer, FAnimPhysRigidBody *FirstBody, const FQuat& JointFrame0, FAnimPhysRigidBody *SecondBody, const FQuat& JointFrame1, AnimPhysTwistAxis TwistAxis, const FVector& InJointLimitMin, const FVector& InJointLimitMax, float InJointBias);
624};
AnimPhysTwistAxis
Definition AnimPhysicsSolver.h:68
AnimPhysCollisionType
Definition AnimPhysicsSolver.h:76
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define DECLARE_CYCLE_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:679
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define FVector
Definition IOSSystemIncludes.h:8
UE::Math::TTransform< double > FTransform
Definition MathFwd.h:53
UE::Math::TVector2< double > FVector2D
Definition MathFwd.h:48
UE::Math::TPlane< double > FPlane
Definition MathFwd.h:52
#define MAX_flt
Definition NumericLimits.h:29
#define UENUM(...)
Definition ObjectMacros.h:749
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition AnimPhysicsSolver.h:297
ENGINE_API void RemoveBias()
Definition AnimPhysicsSolver.cpp:232
float MaximumTorque
Definition AnimPhysicsSolver.h:313
FVector WorldSpaceAxis
Definition AnimPhysicsSolver.h:301
float TargetSpin
Definition AnimPhysicsSolver.h:307
ENGINE_API void UpdateCachedData()
Definition AnimPhysicsSolver.cpp:272
float Torque
Definition AnimPhysicsSolver.h:304
float MinimumTorque
Definition AnimPhysicsSolver.h:310
ENGINE_API FAnimPhysAngularLimit()
Definition AnimPhysicsSolver.cpp:216
float CachedSpinToTorque
Definition AnimPhysicsSolver.h:316
ENGINE_API void Iter(float DeltaTime)
Definition AnimPhysicsSolver.cpp:238
Definition AnimPhysicsSolver.h:286
FAnimPhysRigidBody * Bodies[2]
Definition AnimPhysicsSolver.h:288
Definition AnimPhysicsSolver.h:333
float TargetSpeedWithoutBias
Definition AnimPhysicsSolver.h:349
float MinimumForce
Definition AnimPhysicsSolver.h:352
float InverseInertiaImpulse
Definition AnimPhysicsSolver.h:361
ENGINE_API void Iter(float DetlaTime)
Definition AnimPhysicsSolver.cpp:304
ENGINE_API void UpdateCachedData()
Definition AnimPhysicsSolver.cpp:332
FVector SecondPosition
Definition AnimPhysicsSolver.h:340
ENGINE_API void RemoveBias()
Definition AnimPhysicsSolver.cpp:299
FVector FirstPosition
Definition AnimPhysicsSolver.h:337
ENGINE_API FAnimPhysLinearLimit()
Definition AnimPhysicsSolver.cpp:279
float TargetSpeed
Definition AnimPhysicsSolver.h:346
float Maximumforce
Definition AnimPhysicsSolver.h:355
FVector WorldSpacePosition0
Definition AnimPhysicsSolver.h:364
FVector WorldSpacePosition1
Definition AnimPhysicsSolver.h:367
FVector LimitNormal
Definition AnimPhysicsSolver.h:343
float SumImpulses
Definition AnimPhysicsSolver.h:358
Definition AnimPhysicsSolver.h:213
FQuat StartOrientation
Definition AnimPhysicsSolver.h:241
float AngularDamping
Definition AnimPhysicsSolver.h:251
ENGINE_API FVector Spin()
Definition AnimPhysicsSolver.cpp:200
float LinearDamping
Definition AnimPhysicsSolver.h:255
FVector CenterOfMass
Definition AnimPhysicsSolver.h:270
FVector GravityOverride
Definition AnimPhysicsSolver.h:264
FAnimPhysState PreviousState
Definition AnimPhysicsSolver.h:267
bool bLinearDampingOverriden
Definition AnimPhysicsSolver.h:254
bool bWindEnabled
Definition AnimPhysicsSolver.h:244
FVector StartPosition
Definition AnimPhysicsSolver.h:240
FMatrix InertiaTensor
Definition AnimPhysicsSolver.h:233
FMatrix InverseTensorWithoutMass
Definition AnimPhysicsSolver.h:228
TArray< FAnimPhysShape > Shapes
Definition AnimPhysicsSolver.h:279
bool bUseGravityOverride
Definition AnimPhysicsSolver.h:261
float Mass
Definition AnimPhysicsSolver.h:222
FAnimPhysWindData WindData
Definition AnimPhysicsSolver.h:247
float InverseMass
Definition AnimPhysicsSolver.h:225
FQuat NextOrientation
Definition AnimPhysicsSolver.h:237
AnimPhysCollisionType CollisionType
Definition AnimPhysicsSolver.h:273
float SphereCollisionRadius
Definition AnimPhysicsSolver.h:276
bool bAngularDampingOverriden
Definition AnimPhysicsSolver.h:250
FQuat PreviousOrientation
Definition AnimPhysicsSolver.h:239
FVector NextPosition
Definition AnimPhysicsSolver.h:236
FVector PreviousPosition
Definition AnimPhysicsSolver.h:238
float GravityScale
Definition AnimPhysicsSolver.h:258
FMatrix InverseWorldSpaceTensor
Definition AnimPhysicsSolver.h:231
Definition AnimPhysicsSolver.h:174
const FAnimPhysState & GetState() const
Definition AnimPhysicsSolver.h:188
FAnimPhysPose & GetPose()
Definition AnimPhysicsSolver.h:184
FVector AngularMomentum
Definition AnimPhysicsSolver.h:182
FAnimPhysPose Pose
Definition AnimPhysicsSolver.h:179
FAnimPhysState & GetState()
Definition AnimPhysicsSolver.h:187
ENGINE_API FAnimPhysState()
Definition AnimPhysicsSolver.cpp:143
const FAnimPhysPose & GetPose() const
Definition AnimPhysicsSolver.h:185
FVector LinearMomentum
Definition AnimPhysicsSolver.h:181
Definition AnimPhysicsSolver.h:425
static ENGINE_API void ConstrainAlongDirection(float DeltaTime, TArray< FAnimPhysLinearLimit > &LimitContainer, FAnimPhysRigidBody *FirstBody, const FVector &FirstPosition, FAnimPhysRigidBody *SecondBody, const FVector &SecondPosition, const FVector &AxisToConstrain, const FVector2D Limits, float MinimumForce=-MAX_flt, float MaximumForce=MAX_flt)
Definition AnimPhysicsSolver.cpp:522
static ENGINE_API void ConstrainPlanar(float DeltaTime, TArray< FAnimPhysLinearLimit > &LimitContainer, FAnimPhysRigidBody *Body, const FTransform &PlaneTransform)
Definition AnimPhysicsSolver.cpp:781
static ENGINE_API FMatrix CalculateInertia(const TArray< FVector > &InVertices, const TArray< FIntVector > &InTriangles, const FVector &InCenterOfMass)
Definition AnimPhysicsSolver.cpp:412
static constexpr float AngularAccelerationAlpha
Definition AnimPhysicsSolver.h:441
static ENGINE_API bool bEnableDetailedStats
Definition AnimPhysicsSolver.h:429
static ENGINE_API void ConstrainConeAngle(float DeltaTime, TArray< FAnimPhysAngularLimit > &LimitContainer, FAnimPhysRigidBody *FirstBody, const FVector &Normal0, FAnimPhysRigidBody *SecondBody, const FVector &Normal1, float LimitAngle, float InJointBias)
Definition AnimPhysicsSolver.cpp:762
static ENGINE_API void ConstrainPositionPrismatic(float DeltaTime, TArray< FAnimPhysLinearLimit > &LimitContainer, FAnimPhysRigidBody *FirstBody, const FVector &FirstPosition, FAnimPhysRigidBody *SecondBody, const FVector &SecondPosition, const FQuat &PrismRotation, const FVector &LimitsMin, const FVector &LimitsMax)
Definition AnimPhysicsSolver.cpp:555
static ENGINE_API void PhysicsUpdate(float DeltaTime, TArray< FAnimPhysRigidBody * > &Bodies, TArray< FAnimPhysLinearLimit > &LinearLimits, TArray< FAnimPhysAngularLimit > &AngularLimits, TArray< FAnimPhysSpring > &Springs, const FVector &GravityDirection, const FVector &ExternalForce, const FVector &ExternalLinearAcc, const FVector &ExternalAngularAcc, const FVector &ExternalAngularVelocity, int32 NumPreIterations=8, int32 NumPostIterations=2)
Definition AnimPhysicsSolver.cpp:924
static ENGINE_API void CreateSpring(TArray< FAnimPhysSpring > &SpringContainer, FAnimPhysRigidBody *Body0, FVector Position0, FAnimPhysRigidBody *Body1, FVector Position1)
Definition AnimPhysicsSolver.cpp:837
static ENGINE_API void ScaleRigidBodyMass(FAnimPhysRigidBody *InOutRigidBody, float Scale)
Definition AnimPhysicsSolver.cpp:483
static ENGINE_API void ApplyImpulse(FAnimPhysRigidBody *InOutRigidBody, const FVector &InWorldOrientedImpactPoint, const FVector &InImpulse)
Definition AnimPhysicsSolver.cpp:515
static ENGINE_API float CoriolisAlpha
Definition AnimPhysicsSolver.h:432
static ENGINE_API float CalculateVolume(const TArray< FVector > &InVertices, const TArray< FIntVector > &InTriangles)
Definition AnimPhysicsSolver.cpp:342
static ENGINE_API void ConstrainSphericalInner(float DeltaTime, TArray< FAnimPhysLinearLimit > &LimitContainer, FAnimPhysRigidBody *Body, const FTransform &SphereTransform, float SphereRadius)
Definition AnimPhysicsSolver.cpp:800
static ENGINE_API FVector CalculateCenterOfMass(const TArray< FVector > &InVertices, const TArray< FIntVector > &InTriangles)
Definition AnimPhysicsSolver.cpp:368
static ENGINE_API void ConstrainPositionNailed(float DeltaTime, TArray< FAnimPhysLinearLimit > &LimitContainer, FAnimPhysRigidBody *FirstBody, const FVector &FirstPosition, FAnimPhysRigidBody *SecondBody, const FVector &SecondPosition)
Definition AnimPhysicsSolver.cpp:544
static ENGINE_API float EulerAlpha
Definition AnimPhysicsSolver.h:438
static ENGINE_API void ConstrainSphericalOuter(float DeltaTime, TArray< FAnimPhysLinearLimit > &LimitContainer, FAnimPhysRigidBody *Body, const FTransform &SphereTransform, float SphereRadius)
Definition AnimPhysicsSolver.cpp:819
static ENGINE_API float CentrifugalAlpha
Definition AnimPhysicsSolver.h:435
static ENGINE_API void ConstrainAngularRange(float DeltaTime, TArray< FAnimPhysAngularLimit > &LimitContainer, FAnimPhysRigidBody *FirstBody, FAnimPhysRigidBody *SecondBody, const FQuat &JointFrame, AnimPhysTwistAxis TwistAxis, const FVector &JointLimitMin, const FVector &JointLimitMax, float InJointBias)
Definition AnimPhysicsSolver.cpp:753
Definition Array.h:670
Definition AnimPhysicsSolver.h:51
const float JointBiasFactor
Definition AnimPhysicsSolver.h:53
const float AngularDamping
Definition AnimPhysicsSolver.h:59
const float LinearDamping
Definition AnimPhysicsSolver.h:56
const float DefaultSpringConstantAngular
Definition AnimPhysicsSolver.h:62
const float DefaultSpringConstantLinear
Definition AnimPhysicsSolver.h:61
Definition AnimPhysicsSolver.h:115
FVector operator*(const FVector &InPoint) const
Definition AnimPhysicsSolver.h:152
FAnimPhysPose Inverse() const
Definition AnimPhysicsSolver.h:140
FVector Position
Definition AnimPhysicsSolver.h:116
FAnimPhysPose(const FVector &InPosition, const FQuat &InOrient, const float &InScale)
Definition AnimPhysicsSolver.h:126
FMatrix Matrix() const
Definition AnimPhysicsSolver.h:147
FPlane TransformPlane(const FPlane &InPlane)
Definition AnimPhysicsSolver.h:162
float Scale
Definition AnimPhysicsSolver.h:118
FAnimPhysPose operator*(const FAnimPhysPose &InPose) const
Definition AnimPhysicsSolver.h:157
FAnimPhysPose(const FVector &InPosition, const FQuat &InOrient)
Definition AnimPhysicsSolver.h:120
FAnimPhysPose()
Definition AnimPhysicsSolver.h:132
FQuat Orientation
Definition AnimPhysicsSolver.h:117
Definition AnimPhysicsSolver.h:84
float Volume
Definition AnimPhysicsSolver.h:105
ENGINE_API FAnimPhysShape()
Definition AnimPhysicsSolver.cpp:63
TArray< FIntVector > Triangles
Definition AnimPhysicsSolver.h:102
static ENGINE_API FAnimPhysShape MakeBox(const FVector &Extents)
Definition AnimPhysicsSolver.cpp:76
FVector CenterOfMass
Definition AnimPhysicsSolver.h:108
TArray< FVector > Vertices
Definition AnimPhysicsSolver.h:99
ENGINE_API void TransformVerts(FTransform &InTransform)
Definition AnimPhysicsSolver.cpp:132
Definition AnimPhysicsSolver.h:385
FAnimPhysRigidBody * Body1
Definition AnimPhysicsSolver.h:388
bool bApplyAngular
Definition AnimPhysicsSolver.h:413
FVector AngularTarget
Definition AnimPhysicsSolver.h:394
FAnimPhysRigidBody * Body0
Definition AnimPhysicsSolver.h:387
ENGINE_API void ApplyForces(float DeltaTime)
Definition AnimPhysicsSolver.cpp:1045
FVector Anchor1
Definition AnimPhysicsSolver.h:401
FVector Anchor0
Definition AnimPhysicsSolver.h:400
float SpringConstantLinear
Definition AnimPhysicsSolver.h:404
bool bApplyLinear
Definition AnimPhysicsSolver.h:410
float SpringConstantAngular
Definition AnimPhysicsSolver.h:407
FQuat TargetOrientationOffset
Definition AnimPhysicsSolver.h:391
AnimPhysTwistAxis AngularTargetAxis
Definition AnimPhysicsSolver.h:397
Definition AnimPhysicsSolver.h:195
FVector WindDirection
Definition AnimPhysicsSolver.h:203
float WindAdaption
Definition AnimPhysicsSolver.h:206
float WindSpeed
Definition AnimPhysicsSolver.h:200
float BodyWindScale
Definition AnimPhysicsSolver.h:197
TQuat< T > Inverse() const
Definition Quat.h:1264
TMatrix< T > ToMatrixNoScale() const
Definition TransformNonVectorized.h:320
static UE_FORCEINLINE_HINT double DotProduct(const TVector< double > &A, const TVector< double > &B)
Definition Vector.h:1559