From 552cfebab06f33290a9593fd3e2f5d835ee0dc72 Mon Sep 17 00:00:00 2001 From: "Austin J. Garrett" Date: Wed, 8 Jan 2025 12:03:01 -0500 Subject: Fix shape modification not updating graphics in testbed (#708) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix shape modification not updating graphics in testbed * Add update collider to Testbed * chore: lint shape_modifications3 * chore: simplify GraphicsManager::remove_collider_nodes --------- Co-authored-by: Sébastien Crozet --- src_testbed/graphics.rs | 7 +++++-- src_testbed/testbed.rs | 19 ++++++++++++------- 2 files changed, 17 insertions(+), 9 deletions(-) (limited to 'src_testbed') 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 { self.keys } -- cgit