Rename the 3D debug-deserialize example
This commit is contained in:
committed by
Sébastien Crozet
parent
891c08177d
commit
c8a2c0379e
16
.vscode/tasks.json
vendored
16
.vscode/tasks.json
vendored
@@ -24,6 +24,22 @@
|
|||||||
],
|
],
|
||||||
"group": "build"
|
"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",
|
"label": "🚀 run 3d − 🌈 simd",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
|
|||||||
@@ -20,12 +20,12 @@ mod debug_articulations3;
|
|||||||
mod debug_big_colliders3;
|
mod debug_big_colliders3;
|
||||||
mod debug_boxes3;
|
mod debug_boxes3;
|
||||||
mod debug_cylinder3;
|
mod debug_cylinder3;
|
||||||
|
mod debug_deserialize3;
|
||||||
mod debug_dynamic_collider_add3;
|
mod debug_dynamic_collider_add3;
|
||||||
mod debug_friction3;
|
mod debug_friction3;
|
||||||
mod debug_infinite_fall3;
|
mod debug_infinite_fall3;
|
||||||
mod debug_prismatic3;
|
mod debug_prismatic3;
|
||||||
mod debug_rollback3;
|
mod debug_rollback3;
|
||||||
mod debug_serialized3;
|
|
||||||
mod debug_shape_modification3;
|
mod debug_shape_modification3;
|
||||||
mod debug_triangle3;
|
mod debug_triangle3;
|
||||||
mod debug_trimesh3;
|
mod debug_trimesh3;
|
||||||
@@ -123,10 +123,7 @@ pub fn main() {
|
|||||||
"(Debug) shape modification",
|
"(Debug) shape modification",
|
||||||
debug_shape_modification3::init_world,
|
debug_shape_modification3::init_world,
|
||||||
),
|
),
|
||||||
(
|
("(Debug) deserialize", debug_deserialize3::init_world),
|
||||||
"A serialized",
|
|
||||||
debug_serialized3::init_world,
|
|
||||||
),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
// Lexicographic sort, with stress tests moved at the end of the list.
|
// Lexicographic sort, with stress tests moved at the end of the list.
|
||||||
|
|||||||
42
examples3d/debug_deserialize3.rs
Normal file
42
examples3d/debug_deserialize3.rs
Normal file
@@ -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),
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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]);
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user