42 JPH_INLINE
bool ApplyVelocityStep(
Body &ioBody1,
Body &ioBody2,
Vec3Arg inLambda)
const
88 float summed_inv_mass;
89 Mat44 inv_effective_mass;
98 inv_effective_mass = r1x.
Multiply3x3(invi1).Multiply3x3RightTransposed(r1x);
104 summed_inv_mass = 0.0f;
116 inv_effective_mass += r2x.
Multiply3x3(invi2).Multiply3x3RightTransposed(r2x);
133 mTotalLambda *= inWarmStartImpulseRatio;
134 ApplyVelocityStep(ioBody1, ioBody2, mTotalLambda);
146 mTotalLambda += lambda;
147 return ApplyVelocityStep(ioBody1, ioBody2, lambda);
164 Vec3 lambda = mEffectiveMass * -inBaumgarte * separation;
207 inStream.
Write(mTotalLambda);
213 inStream.
Read(mTotalLambda);
221 Mat44 mEffectiveMass;
#define JPH_IF_DEBUG(...)
Definition Core.h:354
#define JPH_NAMESPACE_END
Definition Core.h:240
#define JPH_NAMESPACE_BEGIN
Definition Core.h:234
const MotionProperties * GetMotionProperties() const
Access to the motion properties.
Definition Body.h:205
RVec3 GetCenterOfMassPosition() const
Gets the world space position of this body's center of mass.
Definition Body.h:193
bool IsDynamic() const
Check if this body is dynamic, which means that it moves and forces can act on it.
Definition Body.h:56
void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Update rotation using an Euler step (using during position integrate & constraint solving)
Definition Body.inl:75
void SubPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)
Definition Body.h:237
Vec3 GetLinearVelocity() const
Get world space linear velocity of the center of mass (unit: m/s)
Definition Body.h:109
void SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Definition Body.inl:93
Vec3 GetAngularVelocity() const
Get world space angular velocity of the center of mass (unit: rad/s)
Definition Body.h:118
void AddPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)
Update position using an Euler step (used during position integrate & constraint solving)
Definition Body.h:236
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
static JPH_INLINE Mat44 sZero()
Zero matrix.
Definition Mat44.inl:30
static JPH_INLINE Mat44 sCrossProduct(Vec3Arg inV)
Get matrix that represents a cross product .
Definition Mat44.inl:179
static JPH_INLINE Mat44 sNaN()
Matrix filled with NaN's.
Definition Mat44.inl:40
static JPH_INLINE Mat44 sScale(float inScale)
Get matrix that scales uniformly.
Definition Mat44.inl:163
JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const
Multiply vector by only 3x3 part of the matrix.
Definition Mat44.inl:307
JPH_INLINE Mat44 Inversed3x3() const
Inverse 3x3 matrix.
Definition Mat44.inl:883
The Body class only keeps track of state for static bodies, the MotionProperties class keeps the addi...
Definition MotionProperties.h:20
void AddLinearVelocityStep(Vec3Arg inLinearVelocityChange)
Definition MotionProperties.h:126
void SubLinearVelocityStep(Vec3Arg inLinearVelocityChange)
Definition MotionProperties.h:127
float GetInverseMass() const
Get inverse mass (1 / mass). Should only be called on a dynamic object (static or kinematic bodies ha...
Definition MotionProperties.h:80
void SubAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:129
Mat44 GetInverseInertiaForRotation(Mat44Arg inRotation) const
Get inverse inertia matrix ( ) for a given object rotation (translation will be ignored)....
Definition MotionProperties.inl:81
void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:128
Definition PointConstraintPart.h:41
void RestoreState(StateRecorder &inStream)
Restore state of this constraint part.
Definition PointConstraintPart.h:211
bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inBaumgarte) const
Definition PointConstraintPart.h:154
bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)
Definition PointConstraintPart.h:140
Vec3 GetTotalLambda() const
Return lagrange multiplier.
Definition PointConstraintPart.h:199
void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
Definition PointConstraintPart.h:131
void CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inR1, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inR2)
Definition PointConstraintPart.h:80
void SaveState(StateRecorder &inStream) const
Save state of this constraint part.
Definition PointConstraintPart.h:205
Definition StateRecorder.h:15
void Read(T &outT)
Read a primitive (e.g. float, int, etc.) from the binary stream.
Definition StreamIn.h:27
void Write(const T &inT)
Write a primitive (e.g. float, int, etc.) to the binary stream.
Definition StreamOut.h:24
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:582
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107