From 3e25e3efba4cd6de8a40fbb26ed758d9e9842941 Mon Sep 17 00:00:00 2001 From: Sébastien Crozet Date: Fri, 28 Jan 2022 20:28:49 +0100 Subject: Fix the application of damping to bodies part of an active island --- src/dynamics/solver/velocity_solver.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/dynamics/solver/velocity_solver.rs b/src/dynamics/solver/velocity_solver.rs index 47275ed..c5c6ede 100644 --- a/src/dynamics/solver/velocity_solver.rs +++ b/src/dynamics/solver/velocity_solver.rs @@ -261,17 +261,22 @@ impl VelocitySolver { multibody.velocities += mj_lambdas; } } else { - let (ids, mprops): (&RigidBodyIds, &RigidBodyMassProps) = - bodies.index_bundle(handle.0); + let (ids, damping, mprops): ( + &RigidBodyIds, + &RigidBodyDamping, + &RigidBodyMassProps, + ) = bodies.index_bundle(handle.0); let dvel = self.mj_lambdas[ids.active_set_offset]; let dangvel = mprops .effective_world_inv_inertia_sqrt .transform_vector(dvel.angular); + let damping = *damping; // To avoid borrow issues. bodies.map_mut_internal(handle.0, |vels: &mut RigidBodyVelocity| { vels.linvel += dvel.linear; vels.angvel += dangvel; + *vels = vels.apply_damping(params.dt, &damping); }); } } -- cgit