Navigation
API > API/Runtime > API/Runtime/Chaos
An FSolverBody decorator for adding mass modifiers to a SolverBody. This will scale the inverse mass and inverse inertia using the supplied scale. It also updates IsDynamic() to return false if the scaled inverse mass is zero.
See FSolverBody for comments on methods.
This functionality cannot be in FSolverBody because two constraints referencing the same body may be applying different mass modifiers (e.g., Joints support "bParentDominates" which is a per-constraint property, not a per-body property.
| Name | FConstraintSolverBody |
| Type | class |
| Header File | /Engine/Source/Runtime/Experimental/Chaos/Public/Chaos/Evolution/SolverBody.h |
| Include Path | #include "Chaos/Evolution/SolverBody.h" |
Syntax
class FConstraintSolverBody
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FConstraintSolverBody
(
FSolverBody& InBody |
Chaos/Evolution/SolverBody.h | ||
| Chaos/Evolution/SolverBody.h |
Structs
| Name | Remarks |
|---|---|
| FState | Struct is only so that we can use the same var names as function names. |
Variables
Protected
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| Body | FSolverBody * | The body we decorate. | Chaos/Evolution/SolverBody.h | |
| State | FState | The body modifiers. | Chaos/Evolution/SolverBody.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
const FVec3 ActorP() |
Chaos/Evolution/SolverBody.h | ||
const FRotation3 ActorQ() |
Chaos/Evolution/SolverBody.h | ||
void ApplyAngularVelocityDelta
(
const FSolverVec3& DW |
Chaos/Evolution/SolverBody.h | ||
void ApplyLinearVelocityDelta
(
const FSolverVec3& DV |
Chaos/Evolution/SolverBody.h | ||
void ApplyPositionCorrectionDelta
(
const FSolverVec3& DP |
Chaos/Evolution/SolverBody.h | ||
void ApplyPositionDelta
(
const FSolverVec3& DP |
Chaos/Evolution/SolverBody.h | ||
void ApplyRotationCorrectionDelta
(
const FSolverVec3& DR |
Chaos/Evolution/SolverBody.h | ||
void ApplyRotationDelta
(
const FSolverVec3& DR |
Chaos/Evolution/SolverBody.h | ||
void ApplyTransformDelta
(
const FSolverVec3& DP, |
Chaos/Evolution/SolverBody.h | ||
void ApplyVelocityDelta
(
const FSolverVec3& DV, |
Chaos/Evolution/SolverBody.h | ||
FRigidTransform3 CoMTransform() |
Chaos/Evolution/SolverBody.h | ||
const FVec3 CorrectedActorP() |
Chaos/Evolution/SolverBody.h | ||
const FRotation3 CorrectedActorQ() |
Chaos/Evolution/SolverBody.h | ||
FVec3 CorrectedP() |
Chaos/Evolution/SolverBody.h | ||
FRotation3 CorrectedQ() |
Chaos/Evolution/SolverBody.h | ||
const FSolverVec3 & CP() |
Chaos/Evolution/SolverBody.h | ||
const FSolverVec3 & CQ() |
Chaos/Evolution/SolverBody.h | ||
const FSolverVec3 & DP() |
Chaos/Evolution/SolverBody.h | ||
const FSolverVec3 & DQ() |
Chaos/Evolution/SolverBody.h | ||
void EnforceShortestRotationTo
(
const FRotation3& InQ |
Chaos/Evolution/SolverBody.h | ||
void Init() |
Initialize all properties to safe values. | Chaos/Evolution/SolverBody.h | |
FSolverMatrix33 InvI() |
The net scaled inverse inertia. | Chaos/Evolution/SolverBody.h | |
FSolverVec3 InvILocal() |
The net scaled local space inverse inertia. | Chaos/Evolution/SolverBody.h | |
FSolverReal InvIScale() |
A scale applied to inverse inertia. | Chaos/Evolution/SolverBody.h | |
FSolverReal InvM() |
The net scaled inverse mass. | Chaos/Evolution/SolverBody.h | |
FSolverReal InvMScale() |
A scale applied to inverse mass. | Chaos/Evolution/SolverBody.h | |
bool IsDynamic() |
Whether the body is dynamic (i.e., has a finite mass) after scaling is applied. | Chaos/Evolution/SolverBody.h | |
bool IsValid() |
True if we have been set up to decorate a SolverBody. | Chaos/Evolution/SolverBody.h | |
int32 Level() |
Chaos/Evolution/SolverBody.h | ||
const FVec3 & P() |
Chaos/Evolution/SolverBody.h | ||
const FRotation3 & Q() |
Chaos/Evolution/SolverBody.h | ||
const FRotation3 & R() |
Chaos/Evolution/SolverBody.h | ||
void Reset() |
Invalidate the solver body reference. | Chaos/Evolution/SolverBody.h | |
void SetImplicitVelocity
(
FReal Dt |
From here all methods just forward to the FSolverBody | Chaos/Evolution/SolverBody.h | |
void SetInvIScale
(
FReal InValue |
Chaos/Evolution/SolverBody.h | ||
void SetInvMScale
(
FReal InValue |
Chaos/Evolution/SolverBody.h | ||
void SetShockPropagationScale
(
FReal InValue |
Chaos/Evolution/SolverBody.h | ||
void SetSolverBody
(
FSolverBody& InSolverBody |
Set the inner solver body (hold by reference) | Chaos/Evolution/SolverBody.h | |
FSolverReal ShockPropagationScale() |
Shock propagation mass and inertia scaling (0 for infinite mass, 1 for no effect) | Chaos/Evolution/SolverBody.h | |
FSolverBody & SolverBody () |
The decorated SolverBody. | Chaos/Evolution/SolverBody.h | |
const FSolverBody & SolverBody () |
Chaos/Evolution/SolverBody.h | ||
void UpdateRotationDependentState() |
Chaos/Evolution/SolverBody.h | ||
const FSolverVec3 & V() |
Chaos/Evolution/SolverBody.h | ||
const FSolverVec3 & W() |
Chaos/Evolution/SolverBody.h | ||
const FVec3 & X() |
Chaos/Evolution/SolverBody.h |