aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.vscode/tasks.json16
-rw-r--r--examples3d/all_examples3.rs7
-rw-r--r--examples3d/debug_deserialize3.rs42
-rw-r--r--examples3d/debug_serialized3.rs38
4 files changed, 60 insertions, 43 deletions
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 1f7b545..ce32955 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -25,6 +25,22 @@
"group": "build"
},
{
+ "label": "🚀 run 3d − 💌 deterministic",
+ "type": "shell",
+ "command": "cargo",
+ "args": [
+ "run",
+ "--bin",
+ "all_examples3",
+ "--release",
+ "--features",
+ "enhanced-determinism",
+ "--",
+ "--pause"
+ ],
+ "group": "build"
+ },
+ {
"label": "🚀 run 3d − 🌈 simd",
"type": "shell",
"command": "cargo",
diff --git a/examples3d/all_examples3.rs b/examples3d/all_examples3.rs
index 2b51a7f..1bef234 100644
--- a/examples3d/all_examples3.rs
+++ b/examples3d/all_examples3.rs
@@ -20,12 +20,12 @@ mod debug_articulations3;
mod debug_big_colliders3;
mod debug_boxes3;
mod debug_cylinder3;
+mod debug_deserialize3;
mod debug_dynamic_collider_add3;
mod debug_friction3;
mod debug_infinite_fall3;
mod debug_prismatic3;
mod debug_rollback3;
-mod debug_serialized3;
mod debug_shape_modification3;
mod debug_triangle3;
mod debug_trimesh3;
@@ -123,10 +123,7 @@ pub fn main() {
"(Debug) shape modification",
debug_shape_modification3::init_world,
),
- (
- "A serialized",
- debug_serialized3::init_world,
- ),
+ ("(Debug) deserialize", debug_deserialize3::init_world),
];
// Lexicographic sort, with stress tests moved at the end of the list.
diff --git a/examples3d/debug_deserialize3.rs b/examples3d/debug_deserialize3.rs
new file mode 100644
index 0000000..6de4c76
--- /dev/null
+++ b/examples3d/debug_deserialize3.rs
@@ -0,0 +1,42 @@
+use rapier3d::prelude::*;
+use rapier_testbed3d::Testbed;
+
+#[derive(serde::Deserialize)]
+struct PhysicsState {
+ pub gravity: Vector<f32>,
+ pub integration_parameters: IntegrationParameters,
+ pub islands: IslandManager,
+ pub broad_phase: BroadPhase,
+ pub narrow_phase: NarrowPhase,
+ pub bodies: RigidBodySet,
+ pub colliders: ColliderSet,
+ pub impulse_joints: ImpulseJointSet,
+ pub multibody_joints: MultibodyJointSet,
+}
+
+pub fn init_world(testbed: &mut Testbed) {
+ /*
+ * Set up the testbed.
+ */
+ let bytes = std::fs::read("state.bin").unwrap();
+ match bincode::deserialize(&bytes) {
+ Ok(state) => {
+ let state: PhysicsState = state;
+ testbed.set_world(
+ state.bodies,
+ state.colliders,
+ state.impulse_joints,
+ state.multibody_joints,
+ );
+ testbed.harness_mut().physics.islands = state.islands;
+ testbed.harness_mut().physics.broad_phase = state.broad_phase;
+ testbed.harness_mut().physics.narrow_phase = state.narrow_phase;
+ testbed.harness_mut().physics.integration_parameters = state.integration_parameters;
+ testbed.harness_mut().physics.gravity = state.gravity;
+
+ testbed.set_graphics_shift(vector![-541.0, -6377257.0, -61.0]);
+ testbed.look_at(point![10.0, 10.0, 10.0], point![0.0, 0.0, 0.0]);
+ }
+ Err(err) => println!("Failed to deserialize the world state: {}", err),
+ }
+}
diff --git a/examples3d/debug_serialized3.rs b/examples3d/debug_serialized3.rs
deleted file mode 100644
index 76766c8..0000000
--- a/examples3d/debug_serialized3.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-use rapier3d::prelude::*;
-use rapier_testbed3d::Testbed;
-
-#[derive(serde::Deserialize)]
-struct PhysicsState {
- pub gravity: Vector<f32>,
- pub integration_parameters: IntegrationParameters,
- pub islands: IslandManager,
- pub broad_phase: BroadPhase,
- pub narrow_phase: NarrowPhase,
- pub bodies: RigidBodySet,
- pub colliders: ColliderSet,
- pub impulse_joints: ImpulseJointSet,
- pub multibody_joints: MultibodyJointSet,
-}
-
-pub fn init_world(testbed: &mut Testbed) {
- /*
- * Set up the testbed.
- */
- let bytes = std::fs::read("state.bin").unwrap();
- let mut state: PhysicsState = bincode::deserialize(&bytes).unwrap();
-
- testbed.set_world(
- state.bodies,
- state.colliders,
- state.impulse_joints,
- state.multibody_joints,
- );
- testbed.harness_mut().physics.islands = state.islands;
- testbed.harness_mut().physics.broad_phase = state.broad_phase;
- testbed.harness_mut().physics.narrow_phase = state.narrow_phase;
- testbed.harness_mut().physics.integration_parameters = state.integration_parameters;
- testbed.harness_mut().physics.gravity = state.gravity;
-
- testbed.set_graphics_shift(vector![-541.0, -6377257.0, -61.0]);
- testbed.look_at(point![10.0, 10.0, 10.0], point![0.0, 0.0, 0.0]);
-}