|
@@ -1448,9 +1448,8 @@ JPH_INLINE void ContactConstraintManager::sWarmStartConstraint(ContactConstraint
|
|
|
for (WorldContactPoint &wcp : ioConstraint.mContactPoints)
|
|
|
{
|
|
|
// Warm starting: Apply impulse from last frame
|
|
|
- if (wcp.mFrictionConstraint1.IsActive())
|
|
|
+ if (wcp.mFrictionConstraint1.IsActive() || wcp.mFrictionConstraint2.IsActive())
|
|
|
{
|
|
|
- JPH_ASSERT(wcp.mFrictionConstraint2.IsActive());
|
|
|
wcp.mFrictionConstraint1.TemplatedWarmStart<Type1, Type2>(ioMotionProperties1, ioConstraint.mInvMass1, ioMotionProperties2, ioConstraint.mInvMass2, t1, inWarmStartImpulseRatio);
|
|
|
wcp.mFrictionConstraint2.TemplatedWarmStart<Type1, Type2>(ioMotionProperties1, ioConstraint.mInvMass1, ioMotionProperties2, ioConstraint.mInvMass2, t2, inWarmStartImpulseRatio);
|
|
|
}
|
|
@@ -1519,10 +1518,8 @@ JPH_INLINE bool ContactConstraintManager::sSolveVelocityConstraint(ContactConstr
|
|
|
for (WorldContactPoint &wcp : ioConstraint.mContactPoints)
|
|
|
{
|
|
|
// Check if friction is enabled
|
|
|
- if (wcp.mFrictionConstraint1.IsActive())
|
|
|
+ if (wcp.mFrictionConstraint1.IsActive() || wcp.mFrictionConstraint2.IsActive())
|
|
|
{
|
|
|
- JPH_ASSERT(wcp.mFrictionConstraint2.IsActive());
|
|
|
-
|
|
|
// Calculate impulse to stop motion in tangential direction
|
|
|
float lambda1 = wcp.mFrictionConstraint1.TemplatedSolveVelocityConstraintGetTotalLambda<Type1, Type2>(ioMotionProperties1, ioMotionProperties2, t1);
|
|
|
float lambda2 = wcp.mFrictionConstraint2.TemplatedSolveVelocityConstraintGetTotalLambda<Type1, Type2>(ioMotionProperties1, ioMotionProperties2, t2);
|