diff options
Diffstat (limited to 'src/dynamics/solver/velocity_constraint.rs')
| -rw-r--r-- | src/dynamics/solver/velocity_constraint.rs | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/dynamics/solver/velocity_constraint.rs b/src/dynamics/solver/velocity_constraint.rs index 514434b..dc7020f 100644 --- a/src/dynamics/solver/velocity_constraint.rs +++ b/src/dynamics/solver/velocity_constraint.rs @@ -239,13 +239,11 @@ impl VelocityConstraint { + gcross1.gdot(gcross1) + gcross2.gdot(gcross2)); - let mut rhs = (vel1 - vel2).dot(&force_dir1); - - if rhs <= -params.restitution_velocity_threshold { - rhs += manifold_point.restitution * rhs - } - - rhs += manifold_point.dist.max(0.0) * inv_dt; + let rhs = if manifold_point.is_bouncy() { + (1.0 + manifold_point.restitution) * (vel1 - vel2).dot(&force_dir1) + } else { + (vel1 - vel2).dot(&force_dir1) + manifold_point.dist.max(0.0) * inv_dt + }; let impulse = manifold_point.data.impulse * warmstart_coeff; |
