From 502be0245c10eeaf5e30ed25653c5a76287e72be Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 3 Nov 2020 11:21:06 +0100 Subject: Add restitution. --- src/dynamics/solver/velocity_constraint.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/dynamics/solver/velocity_constraint.rs') diff --git a/src/dynamics/solver/velocity_constraint.rs b/src/dynamics/solver/velocity_constraint.rs index 190076d..948081d 100644 --- a/src/dynamics/solver/velocity_constraint.rs +++ b/src/dynamics/solver/velocity_constraint.rs @@ -238,8 +238,13 @@ impl VelocityConstraint { + gcross1.gdot(gcross1) + gcross2.gdot(gcross2)); - let rhs = (vel1 - vel2).dot(&force_dir1) - + manifold_point.dist.max(0.0) * params.inv_dt(); + let mut rhs = (vel1 - vel2).dot(&force_dir1); + + if rhs <= -params.restitution_velocity_threshold { + rhs += manifold.restitution * rhs + } + + rhs += manifold_point.dist.max(0.0) * params.inv_dt(); let impulse = manifold_points[k].impulse * warmstart_coeff; -- cgit