From 0d49a809746bade39f844a13f74a2fc03fc1d21f Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Thu, 19 Nov 2020 11:09:40 +0100 Subject: Add a parameter to indicate if collider removal should wake-up its parent. --- src/dynamics/rigid_body_set.rs | 2 +- src/geometry/collider_set.rs | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/dynamics/rigid_body_set.rs b/src/dynamics/rigid_body_set.rs index b857173..ec4d388 100644 --- a/src/dynamics/rigid_body_set.rs +++ b/src/dynamics/rigid_body_set.rs @@ -207,7 +207,7 @@ impl RigidBodySet { * Remove colliders attached to this rigid-body. */ for collider in &rb.colliders { - colliders.remove(*collider, self); + colliders.remove(*collider, self, false); } /* diff --git a/src/geometry/collider_set.rs b/src/geometry/collider_set.rs index fd94675..60b9225 100644 --- a/src/geometry/collider_set.rs +++ b/src/geometry/collider_set.rs @@ -78,10 +78,14 @@ impl ColliderSet { } /// Remove a collider from this set and update its parent accordingly. + /// + /// If `wake_up` is `true`, the rigid-body the removed collider is attached to + /// will be woken up. pub fn remove( &mut self, handle: ColliderHandle, bodies: &mut RigidBodySet, + wake_up: bool, ) -> Option { let collider = self.colliders.remove(handle)?; @@ -90,7 +94,10 @@ impl ColliderSet { */ if let Some(parent) = bodies.get_mut_internal(collider.parent) { parent.remove_collider_internal(handle, &collider); - bodies.wake_up(collider.parent, true); + + if wake_up { + bodies.wake_up(collider.parent, true); + } } /* -- cgit