aboutsummaryrefslogtreecommitdiff
path: root/src_testbed/physics/mod.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/physics/mod.rs
parent6507b7f4fa15e8d09c8c7b62613d0fd561231c0d (diff)
downloadrapier-6b6c349cfa02486c25639fdc09d343145e8da899.tar.gz
rapier-6b6c349cfa02486c25639fdc09d343145e8da899.tar.bz2
rapier-6b6c349cfa02486c25639fdc09d343145e8da899.zip
Fix testbed snapshot restore system
Diffstat (limited to 'src_testbed/physics/mod.rs')
-rw-r--r--src_testbed/physics/mod.rs16
1 files changed, 15 insertions, 1 deletions
diff --git a/src_testbed/physics/mod.rs b/src_testbed/physics/mod.rs
index 26a55c7..bc00327 100644
--- a/src_testbed/physics/mod.rs
+++ b/src_testbed/physics/mod.rs
@@ -14,6 +14,8 @@ pub struct PhysicsSnapshot {
bodies: Vec<u8>,
colliders: Vec<u8>,
impulse_joints: Vec<u8>,
+ multibody_joints: Vec<u8>,
+ island_manager: Vec<u8>,
}
impl PhysicsSnapshot {
@@ -21,17 +23,21 @@ impl PhysicsSnapshot {
timestep_id: usize,
broad_phase: &BroadPhase,
narrow_phase: &NarrowPhase,
+ island_manager: &IslandManager,
bodies: &RigidBodySet,
colliders: &ColliderSet,
impulse_joints: &ImpulseJointSet,
+ multibody_joints: &MultibodyJointSet,
) -> bincode::Result<Self> {
Ok(Self {
timestep_id,
broad_phase: bincode::serialize(broad_phase)?,
narrow_phase: bincode::serialize(narrow_phase)?,
+ island_manager: bincode::serialize(island_manager)?,
bodies: bincode::serialize(bodies)?,
colliders: bincode::serialize(colliders)?,
impulse_joints: bincode::serialize(impulse_joints)?,
+ multibody_joints: bincode::serialize(multibody_joints)?,
})
}
@@ -41,32 +47,40 @@ impl PhysicsSnapshot {
usize,
BroadPhase,
NarrowPhase,
+ IslandManager,
RigidBodySet,
ColliderSet,
ImpulseJointSet,
+ MultibodyJointSet,
)> {
Ok((
self.timestep_id,
bincode::deserialize(&self.broad_phase)?,
bincode::deserialize(&self.narrow_phase)?,
+ bincode::deserialize(&self.island_manager)?,
bincode::deserialize(&self.bodies)?,
bincode::deserialize(&self.colliders)?,
bincode::deserialize(&self.impulse_joints)?,
+ bincode::deserialize(&self.multibody_joints)?,
))
}
pub fn print_snapshot_len(&self) {
let total = self.broad_phase.len()
+ self.narrow_phase.len()
+ + self.island_manager.len()
+ self.bodies.len()
+ self.colliders.len()
- + self.impulse_joints.len();
+ + self.impulse_joints.len()
+ + self.multibody_joints.len();
println!("Snapshot length: {}B", total);
println!("|_ broad_phase: {}B", self.broad_phase.len());
println!("|_ narrow_phase: {}B", self.narrow_phase.len());
+ println!("|_ island_manager: {}B", self.island_manager.len());
println!("|_ bodies: {}B", self.bodies.len());
println!("|_ colliders: {}B", self.colliders.len());
println!("|_ impulse_joints: {}B", self.impulse_joints.len());
+ println!("|_ multibody_joints: {}B", self.multibody_joints.len());
}
}