aboutsummaryrefslogtreecommitdiff
path: root/examples3d-f64/debug_serialized3.rs
blob: 3801d37b583d3c7a13026af1e9ea0a2a5fa98ab9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use rapier3d::prelude::*;
use rapier_testbed3d::Testbed;

#[derive(serde::Deserialize)]
struct State {
    pub islands: IslandManager,
    pub broad_phase: DefaultBroadPhase,
    pub narrow_phase: NarrowPhase,
    pub bodies: RigidBodySet,
    pub colliders: ColliderSet,
    pub impulse_joints: ImpulseJointSet,
    pub multibody_joints: MultibodyJointSet,
    pub ccd_solver: CCDSolver,
}

pub fn init_world(testbed: &mut Testbed) {
    /*
     * Set up the testbed.
     */
    let bytes = std::fs::read("state.bin").unwrap();
    let state: State = 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.ccd_solver = state.ccd_solver;

    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]);
}