aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Berger <contact@thierryberger.com>2024-09-23 18:15:29 +0200
committerGitHub <noreply@github.com>2024-09-23 18:15:29 +0200
commit9e1113c5c7e3c3a042bc5979c158e752acfeb46a (patch)
treef5d41dce0ba5fa6f83d5e1fcde331a2294229e5d
parent76357e3588dfc5efe9fa609df21e2aaf707fbba9 (diff)
downloadrapier-9e1113c5c7e3c3a042bc5979c158e752acfeb46a.tar.gz
rapier-9e1113c5c7e3c3a042bc5979c158e752acfeb46a.tar.bz2
rapier-9e1113c5c7e3c3a042bc5979c158e752acfeb46a.zip
fix compilation for feature enhanced-determinism (#739)
-rw-r--r--.github/workflows/rapier-ci-build.yml4
-rw-r--r--src/geometry/broad_phase_multi_sap/broad_phase_multi_sap.rs7
-rw-r--r--src/geometry/broad_phase_multi_sap/sap_layer.rs3
-rw-r--r--src/pipeline/physics_pipeline.rs12
4 files changed, 22 insertions, 4 deletions
diff --git a/.github/workflows/rapier-ci-build.yml b/.github/workflows/rapier-ci-build.yml
index 32f4a4a..e978550 100644
--- a/.github/workflows/rapier-ci-build.yml
+++ b/.github/workflows/rapier-ci-build.yml
@@ -59,6 +59,10 @@ jobs:
run: cd crates/rapier_testbed2d; cargo check --verbose --features parallel;
- name: Check rapier_testbed3d --features parallel
run: cd crates/rapier_testbed3d; cargo check --verbose --features parallel;
+ - name: Check rapier_testbed2d --features enhanced-determinism
+ run: cd crates/rapier2d; cargo check --verbose --features enhanced-determinism;
+ - name: Check rapier_testbed3d --features enhanced-determinism
+ run: cd crates/rapier3d; cargo check --verbose --features enhanced-determinism;
- name: Check rapier-examples-2d
run: cargo check -j 1 --verbose -p rapier-examples-2d;
- name: Check rapier-examples-3d
diff --git a/src/geometry/broad_phase_multi_sap/broad_phase_multi_sap.rs b/src/geometry/broad_phase_multi_sap/broad_phase_multi_sap.rs
index 78b00b9..cd5ac28 100644
--- a/src/geometry/broad_phase_multi_sap/broad_phase_multi_sap.rs
+++ b/src/geometry/broad_phase_multi_sap/broad_phase_multi_sap.rs
@@ -231,7 +231,12 @@ impl BroadPhaseMultiSap {
* Actually remove the colliders proxies.
*/
for removed in removed_colliders {
- if let Some(proxy_id) = self.colliders_proxy_ids.remove(removed) {
+ #[cfg(feature = "enhanced-determinism")]
+ let proxy_id = self.colliders_proxy_ids.swap_remove(removed);
+ #[cfg(not(feature = "enhanced-determinism"))]
+ let proxy_id = self.colliders_proxy_ids.remove(removed);
+
+ if let Some(proxy_id) = proxy_id {
if proxy_id != crate::INVALID_U32 {
self.proxies.remove(proxy_id);
}
diff --git a/src/geometry/broad_phase_multi_sap/sap_layer.rs b/src/geometry/broad_phase_multi_sap/sap_layer.rs
index 241f8d2..2620798 100644
--- a/src/geometry/broad_phase_multi_sap/sap_layer.rs
+++ b/src/geometry/broad_phase_multi_sap/sap_layer.rs
@@ -356,6 +356,9 @@ impl SAPLayer {
// Check if we can actually delete this region.
if !region.contains_subproper_proxies() {
+ #[cfg(feature = "enhanced-determinism")]
+ let region_id = region_id.swap_remove();
+ #[cfg(not(feature = "enhanced-determinism"))]
let region_id = region_id.remove();
// We can delete this region. So we need to tell the larger
diff --git a/src/pipeline/physics_pipeline.rs b/src/pipeline/physics_pipeline.rs
index ab4b119..8505618 100644
--- a/src/pipeline/physics_pipeline.rs
+++ b/src/pipeline/physics_pipeline.rs
@@ -426,11 +426,17 @@ impl PhysicsPipeline {
// Apply some of delayed wake-ups.
self.counters.stages.user_changes.start();
- for handle in impulse_joints
+ #[cfg(feature = "enhanced-determinism")]
+ let impulse_joints_iterator = impulse_joints
+ .to_wake_up
+ .drain(..)
+ .chain(multibody_joints.to_wake_up.drain(..));
+ #[cfg(not(feature = "enhanced-determinism"))]
+ let impulse_joints_iterator = impulse_joints
.to_wake_up
.drain()
- .chain(multibody_joints.to_wake_up.drain())
- {
+ .chain(multibody_joints.to_wake_up.drain());
+ for handle in impulse_joints_iterator {
islands.wake_up(bodies, handle.0, true);
}