aboutsummaryrefslogtreecommitdiff
path: root/src_testbed
diff options
context:
space:
mode:
authorAustin J. Garrett <agarrett777@gmail.com>2025-01-08 12:03:01 -0500
committerGitHub <noreply@github.com>2025-01-08 18:03:01 +0100
commit552cfebab06f33290a9593fd3e2f5d835ee0dc72 (patch)
tree6b86c26395483e14afd86dc0643c359759dcc43c /src_testbed
parent2ed19347563f2f8b9dabcf4f818805dede148135 (diff)
downloadrapier-552cfebab06f33290a9593fd3e2f5d835ee0dc72.tar.gz
rapier-552cfebab06f33290a9593fd3e2f5d835ee0dc72.tar.bz2
rapier-552cfebab06f33290a9593fd3e2f5d835ee0dc72.zip
Fix shape modification not updating graphics in testbed (#708)
* 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 <sebcrozet@dimforge.com>
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
}