aboutsummaryrefslogtreecommitdiff
path: root/src_testbed/testbed.rs
diff options
context:
space:
mode:
authorSébastien Crozet <sebcrozet@dimforge.com>2024-03-01 20:18:19 +0100
committerSébastien Crozet <sebastien@crozet.re>2024-03-23 10:39:02 +0100
commit6b6c349cfa02486c25639fdc09d343145e8da899 (patch)
tree89d25fd811e097c2af18d15473cf715db9ccc68a /src_testbed/testbed.rs
parent6507b7f4fa15e8d09c8c7b62613d0fd561231c0d (diff)
downloadrapier-6b6c349cfa02486c25639fdc09d343145e8da899.tar.gz
rapier-6b6c349cfa02486c25639fdc09d343145e8da899.tar.bz2
rapier-6b6c349cfa02486c25639fdc09d343145e8da899.zip
Fix testbed snapshot restore system
Diffstat (limited to 'src_testbed/testbed.rs')
-rw-r--r--src_testbed/testbed.rs33
1 files changed, 27 insertions, 6 deletions
diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs
index e5a5f13..5430384 100644
--- a/src_testbed/testbed.rs
+++ b/src_testbed/testbed.rs
@@ -24,7 +24,7 @@ use rapier::dynamics::{
use rapier::geometry::Ray;
use rapier::geometry::{ColliderHandle, ColliderSet, NarrowPhase};
use rapier::math::{Real, Vector};
-use rapier::pipeline::{PhysicsHooks, QueryFilter};
+use rapier::pipeline::{PhysicsHooks, QueryFilter, QueryPipeline};
#[cfg(all(feature = "dim2", feature = "other-backends"))]
use crate::box2d_backend::Box2dWorld;
@@ -1250,9 +1250,11 @@ fn update_testbed(
harness.state.timestep_id,
&harness.physics.broad_phase,
&harness.physics.narrow_phase,
+ &harness.physics.islands,
&harness.physics.bodies,
&harness.physics.colliders,
&harness.physics.impulse_joints,
+ &harness.physics.multibody_joints,
)
.ok();
@@ -1269,17 +1271,36 @@ fn update_testbed(
.action_flags
.set(TestbedActionFlags::RESTORE_SNAPSHOT, false);
if let Some(snapshot) = &state.snapshot {
- if let Ok(w) = snapshot.restore() {
+ if let Ok((
+ timestep_id,
+ broad_phase,
+ narrow_phase,
+ island_manager,
+ bodies,
+ colliders,
+ impulse_joints,
+ multibody_joints,
+ )) = snapshot.restore()
+ {
clear(&mut commands, &mut state, &mut graphics, &mut plugins);
for plugin in &mut plugins.0 {
plugin.clear_graphics(&mut graphics, &mut commands);
}
- // set_world(w.3, w.4, w.5);
- harness.physics.broad_phase = w.1;
- harness.physics.narrow_phase = w.2;
- harness.state.timestep_id = w.0;
+ harness.state.timestep_id = timestep_id;
+ harness.physics.broad_phase = broad_phase;
+ harness.physics.narrow_phase = narrow_phase;
+ harness.physics.islands = island_manager;
+ harness.physics.bodies = bodies;
+ harness.physics.colliders = colliders;
+ harness.physics.impulse_joints = impulse_joints;
+ harness.physics.multibody_joints = multibody_joints;
+ harness.physics.query_pipeline = QueryPipeline::new();
+
+ state
+ .action_flags
+ .set(TestbedActionFlags::RESET_WORLD_GRAPHICS, true);
}
}
}