summaryrefslogtreecommitdiff
path: root/src/sim/rb_manager/mod.rs
diff options
context:
space:
mode:
authorKai Stevenson <kai@kaistevenson.com>2026-08-29 15:02:16 -0700
committerKai Stevenson <kai@kaistevenson.com>2026-08-29 15:02:16 -0700
commitccdb95aff78d58321f6f2b7a866b09943260c09c (patch)
tree3c32204302c63c4a5ba6ce5c734bae66fe419381 /src/sim/rb_manager/mod.rs
parentd7d17f777987047999d09d196417d3f8e8241ba5 (diff)
temp fix for rapier
Diffstat (limited to 'src/sim/rb_manager/mod.rs')
-rw-r--r--src/sim/rb_manager/mod.rs26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/sim/rb_manager/mod.rs b/src/sim/rb_manager/mod.rs
index 1d76621..9d183db 100644
--- a/src/sim/rb_manager/mod.rs
+++ b/src/sim/rb_manager/mod.rs
@@ -3,7 +3,7 @@ pub mod debug_render;
use fxhash::FxHashMap;
use glam::Vec2;
use rapier2d::{
- dynamics::IntegrationParameters,
+ dynamics::{CCDSolver, IntegrationParameters, RigidBody, RigidBodyHandle},
geometry,
glamx::vec2,
pipeline::{DebugRenderPipeline, PhysicsWorld},
@@ -49,6 +49,28 @@ impl PhysicsManager {
),
}
}
+
+ // Temporary fix for https://github.com/dimforge/rapier/pull/1003
+ pub fn remove_collider(
+ &mut self,
+ handle: geometry::ColliderHandle,
+ ) -> Option<geometry::Collider> {
+ let removed = self.world.remove_collider(handle);
+ self.ccd_cache_invalidated();
+ removed
+ }
+
+ // Temporary fix for https://github.com/dimforge/rapier/pull/1003
+ pub fn remove_body(&mut self, handle: RigidBodyHandle) -> Option<RigidBody> {
+ let removed = self.world.remove_body(handle);
+ self.ccd_cache_invalidated();
+ removed
+ }
+
+ // Temporary fix for https://github.com/dimforge/rapier/pull/1003
+ fn ccd_cache_invalidated(&mut self) {
+ self.world.ccd_solver = CCDSolver::new();
+ }
}
// TODO remove
@@ -141,7 +163,7 @@ impl RbManager {
));
if let Some(handle) = self.chunk_colliders.remove(&(cx, cy)) {
- self.physics_manager.world.remove_collider(handle);
+ self.physics_manager.remove_collider(handle);
}
let handle = self.physics_manager.world.insert_collider(collider, None);