From 1657a1c55f2a648eab8485cff47bdced5c62eec9 Mon Sep 17 00:00:00 2001 From: Joona Aalto Date: Mon, 24 Aug 2026 00:02:37 +0300 Subject: [PATCH 1/2] Add `NarrowPhase::set_query_dispatcher` --- src/geometry/narrow_phase/mod.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/geometry/narrow_phase/mod.rs b/src/geometry/narrow_phase/mod.rs index 65ae91da2..7a868991f 100644 --- a/src/geometry/narrow_phase/mod.rs +++ b/src/geometry/narrow_phase/mod.rs @@ -447,6 +447,14 @@ impl NarrowPhase { } } + /// Replaces the query dispatcher used by this narrow-phase. + pub fn set_query_dispatcher(&mut self, d: D) + where + D: 'static + PersistentQueryDispatcher, + { + self.query_dispatcher = Arc::new(d); + } + fn refresh_awake_body_mask(&mut self, islands: &IslandManager) { self.awake_body_mask.clear(); let len = islands From 21ff63c006207262b508aa39b39999e209e17fe6 Mon Sep 17 00:00:00 2001 From: Joona Aalto Date: Mon, 24 Aug 2026 00:11:19 +0300 Subject: [PATCH 2/2] Skip contact workspace during (de)serialization --- src/geometry/contact_pair.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/geometry/contact_pair.rs b/src/geometry/contact_pair.rs index 6879a80b6..7cc63e5e1 100644 --- a/src/geometry/contact_pair.rs +++ b/src/geometry/contact_pair.rs @@ -244,6 +244,7 @@ pub struct ContactPair { /// Event bookkeeping: `CollisionEvent::Started` emission and force-event /// threshold status. pub(crate) event_status: PairEventStatus, + #[cfg_attr(feature = "serde-serialize", serde(skip))] pub(crate) workspace: Option, /// State cached at the last full narrow-phase update, allowing the update to be /// skipped ("recycled") while the colliders' relative pose stays within