diff options
Diffstat (limited to 'src_testbed')
| -rw-r--r-- | src_testbed/graphics.rs | 7 | ||||
| -rw-r--r-- | src_testbed/testbed.rs | 19 |
2 files changed, 17 insertions, 9 deletions
diff --git a/src_testbed/graphics.rs b/src_testbed/graphics.rs index 076ef29..355f80f 100644 --- a/src_testbed/graphics.rs +++ b/src_testbed/graphics.rs @@ -83,13 +83,16 @@ impl GraphicsManager { ) { let body = body.unwrap_or(RigidBodyHandle::invalid()); if let Some(sns) = self.b2sn.get_mut(&body) { - for sn in sns.iter_mut() { + sns.retain(|sn| { if let Some(sn_c) = sn.collider { if sn_c == collider { commands.entity(sn.entity).despawn(); + return false; } } - } + + true + }); } } diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs index 2020ed9..37b5710 100644 --- a/src_testbed/testbed.rs +++ b/src_testbed/testbed.rs @@ -492,13 +492,6 @@ impl TestbedGraphics<'_, '_, '_, '_, '_, '_> { ) } - pub fn remove_collider(&mut self, handle: ColliderHandle, colliders: &ColliderSet) { - if let Some(parent_handle) = colliders.get(handle).map(|c| c.parent()) { - self.graphics - .remove_collider_nodes(&mut *self.commands, parent_handle, handle) - } - } - pub fn remove_body(&mut self, handle: RigidBodyHandle) { self.graphics.remove_body_nodes(&mut *self.commands, handle) } @@ -513,6 +506,18 @@ impl TestbedGraphics<'_, '_, '_, '_, '_, '_> { ) } + pub fn remove_collider(&mut self, handle: ColliderHandle, colliders: &ColliderSet) { + if let Some(parent_handle) = colliders.get(handle).map(|c| c.parent()) { + self.graphics + .remove_collider_nodes(&mut *self.commands, parent_handle, handle) + } + } + + pub fn update_collider(&mut self, handle: ColliderHandle, colliders: &ColliderSet) { + self.remove_collider(handle, colliders); + self.add_collider(handle, colliders); + } + pub fn keys(&self) -> &ButtonInput<KeyCode> { self.keys } |
