From 5e7eedc3fdf74b49ecd999b003570bf352ee3f11 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Thu, 18 Feb 2021 17:58:17 +0100 Subject: Always apply the predictive contact term, even for bouncing contacts --- src/dynamics/solver/velocity_ground_constraint.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/dynamics/solver/velocity_ground_constraint.rs') diff --git a/src/dynamics/solver/velocity_ground_constraint.rs b/src/dynamics/solver/velocity_ground_constraint.rs index f147ccb..88f864a 100644 --- a/src/dynamics/solver/velocity_ground_constraint.rs +++ b/src/dynamics/solver/velocity_ground_constraint.rs @@ -154,11 +154,10 @@ impl VelocityGroundConstraint { let r = 1.0 / (rb2.effective_inv_mass + gcross2.gdot(gcross2)); - 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 is_bouncy = manifold_point.is_bouncy() as u32 as Real; + let rhs = (1.0 + is_bouncy * manifold_point.restitution) + * (vel1 - vel2).dot(&force_dir1) + + manifold_point.dist.max(0.0) * inv_dt; let impulse = manifold_point.data.impulse * warmstart_coeff; -- cgit