aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2020-11-19 11:09:40 +0100
committerCrozet Sébastien <developer@crozet.re>2020-11-19 18:00:43 +0100
commit0d49a809746bade39f844a13f74a2fc03fc1d21f (patch)
tree36a3e14bd7e31f6cb5e3e1b28bf695acfc99b4d7 /src
parent1b0f39073fa5f87ec275fff0125649de123e6fa9 (diff)
downloadrapier-0d49a809746bade39f844a13f74a2fc03fc1d21f.tar.gz
rapier-0d49a809746bade39f844a13f74a2fc03fc1d21f.tar.bz2
rapier-0d49a809746bade39f844a13f74a2fc03fc1d21f.zip
Add a parameter to indicate if collider removal should wake-up its parent.
Diffstat (limited to 'src')
-rw-r--r--src/dynamics/rigid_body_set.rs2
-rw-r--r--src/geometry/collider_set.rs9
2 files changed, 9 insertions, 2 deletions
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<Collider> {
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);
+ }
}
/*