aboutsummaryrefslogtreecommitdiff
path: root/src/dynamics
diff options
context:
space:
mode:
Diffstat (limited to 'src/dynamics')
-rw-r--r--src/dynamics/rigid_body_set.rs13
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);
+ }
}
/*