diff options
Diffstat (limited to 'src/dynamics')
| -rw-r--r-- | src/dynamics/rigid_body_set.rs | 13 |
1 files changed, 11 insertions, 2 deletions
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<RigidBody> { 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); + } } /* |
