From 28cc19d104d986db54d8725e68189070bef31a8a Mon Sep 17 00:00:00 2001 From: Sébastien Crozet Date: Sun, 20 Feb 2022 14:21:59 +0100 Subject: Allow removing a rigid-body without auto-removing attached colliders --- src/dynamics/rigid_body_set.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/dynamics') diff --git a/src/dynamics/rigid_body_set.rs b/src/dynamics/rigid_body_set.rs index d6999ee..d033839 100644 --- a/src/dynamics/rigid_body_set.rs +++ b/src/dynamics/rigid_body_set.rs @@ -141,6 +141,7 @@ impl RigidBodySet { colliders: &mut ColliderSet, impulse_joints: &mut ImpulseJointSet, multibody_joints: &mut MultibodyJointSet, + remove_attached_colliders: bool, ) -> Option { let rb = self.bodies.remove(handle.0)?; /* @@ -151,8 +152,16 @@ impl RigidBodySet { /* * Remove colliders attached to this rigid-body. */ - for collider in rb.colliders() { - colliders.remove(*collider, islands, self, false); + if remove_attached_colliders { + for collider in rb.colliders() { + colliders.remove(*collider, islands, self, false); + } + } else { + // If we don’t remove the attached colliders, simply detach them. + let colliders_to_detach = rb.colliders().to_vec(); + for co_handle in colliders_to_detach { + colliders.set_parent(co_handle, None, self); + } } /* -- cgit