12template <EMotionType Type1>
25template <EMotionType Type2>
39template <EMotionType Type1, EMotionType Type2>
43 JPH_INLINE
bool ApplyVelocityStep(
Vec3 &ioAngularVelocity1,
Vec3 &ioAngularVelocity2,
float inLambda)
const
67 Vec3 invi1_axis, invi2_axis;
79 float inv_effective_mass = 0.0f;
81 inv_effective_mass = inWorldSpaceAxis.
Dot(invi1_axis + invi2_axis);
83 inv_effective_mass = inWorldSpaceAxis.
Dot(invi1_axis);
85 inv_effective_mass = inWorldSpaceAxis.
Dot(invi2_axis);
89 if (inv_effective_mass == 0.0f)
96 inline bool WarmStart(
Vec3 &ioAngularVelocity1,
Vec3 &ioAngularVelocity2,
float inWarmStartImpulseRatio)
99 return ApplyVelocityStep(ioAngularVelocity1, ioAngularVelocity2, this->
mTotalLambda);
107 jv = inWorldSpaceAxis.
Dot(ioAngularVelocity1 - ioAngularVelocity2);
109 jv = inWorldSpaceAxis.
Dot(ioAngularVelocity1);
111 jv = -inWorldSpaceAxis.
Dot(ioAngularVelocity2);
118 this->mTotalLambda = new_lambda;
120 return ApplyVelocityStep(ioAngularVelocity1, ioAngularVelocity2, lambda);
#define JPH_NAMESPACE_END
Definition Core.h:434
#define JPH_NAMESPACE_BEGIN
Definition Core.h:428
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
JPH_INLINE constexpr T Clamp(T inV, T inMin, T inMax)
Clamp a value between two values.
Definition Math.h:63
EMotionType
Motion type of a physics body.
Definition MotionType.h:11
@ Dynamic
Responds to forces as a normal physics object.
Float3 mInvI1_Axis
Definition AngularFrictionConstraintPart.h:22
Decide which members this constraint part needs based on motion type.
Definition AngularFrictionConstraintPart.h:14
Float3 mInvI2_Axis
Definition AngularFrictionConstraintPart.h:35
Definition AngularFrictionConstraintPart.h:27
This is a copy of AngleConstraintPart, specialized to handle contact constraints. See the documentati...
Definition AngularFrictionConstraintPart.h:41
bool SolveVelocityConstraint(Vec3 &ioAngularVelocity1, Vec3 &ioAngularVelocity2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)
See: AngleConstraintPart::SolveVelocityConstraint.
Definition AngularFrictionConstraintPart.h:103
bool WarmStart(Vec3 &ioAngularVelocity1, Vec3 &ioAngularVelocity2, float inWarmStartImpulseRatio)
See: AngleConstraintPart::WarmStart.
Definition AngularFrictionConstraintPart.h:96
void CalculateConstraintProperties(Mat44Arg inInvI1, Mat44Arg inInvI2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)
See: AngleConstraintPart::CalculateConstraintProperties.
Definition AngularFrictionConstraintPart.h:60
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const
Multiply vector by only 3x3 part of the matrix.
Definition Mat44.inl:384
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:931
JPH_INLINE bool IsNormalized(float inTolerance=1.0e-6f) const
Test if vector is normalized.
Definition Vec3.inl:1030
JPH_INLINE void StoreFloat3(Float3 *outV) const
Store 3 floats to memory.
Definition Vec3.inl:1055
static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (reads 32 bits extra which it doesn't use)
Definition Vec3.inl:167