From ccdb95aff78d58321f6f2b7a866b09943260c09c Mon Sep 17 00:00:00 2001 From: Kai Stevenson Date: Sat, 29 Aug 2026 15:02:16 -0700 Subject: temp fix for rapier --- src/sim/rb_manager/mod.rs | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'src/sim/rb_manager') 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 { + 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 { + 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); -- cgit v1.3.1