aboutsummaryrefslogtreecommitdiff
path: root/src_testbed
diff options
context:
space:
mode:
Diffstat (limited to 'src_testbed')
-rw-r--r--src_testbed/graphics.rs7
-rw-r--r--src_testbed/testbed.rs19
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
}