From 6b6c349cfa02486c25639fdc09d343145e8da899 Mon Sep 17 00:00:00 2001 From: Sébastien Crozet Date: Fri, 1 Mar 2024 20:18:19 +0100 Subject: Fix testbed snapshot restore system --- src_testbed/physics/mod.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src_testbed/physics') 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, colliders: Vec, impulse_joints: Vec, + multibody_joints: Vec, + island_manager: Vec, } 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 { 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()); } } -- cgit From f9663f894c022e25ae6c6bc572dc305fab1adb76 Mon Sep 17 00:00:00 2001 From: Sébastien Crozet Date: Sat, 23 Mar 2024 10:25:56 +0100 Subject: chore: clippy fix --- src_testbed/physics/mod.rs | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) (limited to 'src_testbed/physics') diff --git a/src_testbed/physics/mod.rs b/src_testbed/physics/mod.rs index bc00327..c3b750f 100644 --- a/src_testbed/physics/mod.rs +++ b/src_testbed/physics/mod.rs @@ -18,6 +18,17 @@ pub struct PhysicsSnapshot { island_manager: Vec, } +pub struct DeserializedPhysicsSnapshot { + pub timestep_id: usize, + pub broad_phase: BroadPhase, + pub narrow_phase: NarrowPhase, + pub island_manager: IslandManager, + pub bodies: RigidBodySet, + pub colliders: ColliderSet, + pub impulse_joints: ImpulseJointSet, + pub multibody_joints: MultibodyJointSet, +} + impl PhysicsSnapshot { pub fn new( timestep_id: usize, @@ -41,28 +52,17 @@ impl PhysicsSnapshot { }) } - pub fn restore( - &self, - ) -> bincode::Result<( - 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 restore(&self) -> bincode::Result { + Ok(DeserializedPhysicsSnapshot { + timestep_id: self.timestep_id, + broad_phase: bincode::deserialize(&self.broad_phase)?, + narrow_phase: bincode::deserialize(&self.narrow_phase)?, + island_manager: bincode::deserialize(&self.island_manager)?, + bodies: bincode::deserialize(&self.bodies)?, + colliders: bincode::deserialize(&self.colliders)?, + impulse_joints: bincode::deserialize(&self.impulse_joints)?, + multibody_joints: bincode::deserialize(&self.multibody_joints)?, + }) } pub fn print_snapshot_len(&self) { -- cgit From cfb2c2c93e39e1f59557c4f32fde4a68dc4cd6fc Mon Sep 17 00:00:00 2001 From: Sébastien Crozet Date: Sat, 23 Mar 2024 13:26:53 +0100 Subject: feat!: rename BroadPhase to BroadPhaseMultiSap --- src_testbed/physics/mod.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src_testbed/physics') diff --git a/src_testbed/physics/mod.rs b/src_testbed/physics/mod.rs index c3b750f..38c9da0 100644 --- a/src_testbed/physics/mod.rs +++ b/src_testbed/physics/mod.rs @@ -3,7 +3,9 @@ use rapier::dynamics::{ CCDSolver, ImpulseJointSet, IntegrationParameters, IslandManager, MultibodyJointSet, RigidBodySet, }; -use rapier::geometry::{BroadPhase, ColliderSet, CollisionEvent, ContactForceEvent, NarrowPhase}; +use rapier::geometry::{ + BroadPhaseMultiSap, ColliderSet, CollisionEvent, ContactForceEvent, NarrowPhase, +}; use rapier::math::{Real, Vector}; use rapier::pipeline::{PhysicsHooks, PhysicsPipeline, QueryPipeline}; @@ -20,7 +22,7 @@ pub struct PhysicsSnapshot { pub struct DeserializedPhysicsSnapshot { pub timestep_id: usize, - pub broad_phase: BroadPhase, + pub broad_phase: BroadPhaseMultiSap, pub narrow_phase: NarrowPhase, pub island_manager: IslandManager, pub bodies: RigidBodySet, @@ -32,7 +34,7 @@ pub struct DeserializedPhysicsSnapshot { impl PhysicsSnapshot { pub fn new( timestep_id: usize, - broad_phase: &BroadPhase, + broad_phase: &BroadPhaseMultiSap, narrow_phase: &NarrowPhase, island_manager: &IslandManager, bodies: &RigidBodySet, @@ -86,7 +88,7 @@ impl PhysicsSnapshot { pub struct PhysicsState { pub islands: IslandManager, - pub broad_phase: BroadPhase, + pub broad_phase: BroadPhaseMultiSap, pub narrow_phase: NarrowPhase, pub bodies: RigidBodySet, pub colliders: ColliderSet, @@ -110,7 +112,7 @@ impl PhysicsState { pub fn new() -> Self { Self { islands: IslandManager::new(), - broad_phase: BroadPhase::new(), + broad_phase: BroadPhaseMultiSap::new(), narrow_phase: NarrowPhase::new(), bodies: RigidBodySet::new(), colliders: ColliderSet::new(), -- cgit From b3a00b4123c85d047b5ab6b89d4d500cc2b92ba6 Mon Sep 17 00:00:00 2001 From: Sébastien Crozet Date: Sat, 23 Mar 2024 14:47:05 +0100 Subject: feat: add the DefaultBroadPhase type alias --- src_testbed/physics/mod.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src_testbed/physics') diff --git a/src_testbed/physics/mod.rs b/src_testbed/physics/mod.rs index 38c9da0..3c69f6e 100644 --- a/src_testbed/physics/mod.rs +++ b/src_testbed/physics/mod.rs @@ -4,7 +4,7 @@ use rapier::dynamics::{ RigidBodySet, }; use rapier::geometry::{ - BroadPhaseMultiSap, ColliderSet, CollisionEvent, ContactForceEvent, NarrowPhase, + ColliderSet, CollisionEvent, ContactForceEvent, DefaultBroadPhase, NarrowPhase, }; use rapier::math::{Real, Vector}; use rapier::pipeline::{PhysicsHooks, PhysicsPipeline, QueryPipeline}; @@ -22,7 +22,7 @@ pub struct PhysicsSnapshot { pub struct DeserializedPhysicsSnapshot { pub timestep_id: usize, - pub broad_phase: BroadPhaseMultiSap, + pub broad_phase: DefaultBroadPhase, pub narrow_phase: NarrowPhase, pub island_manager: IslandManager, pub bodies: RigidBodySet, @@ -34,7 +34,7 @@ pub struct DeserializedPhysicsSnapshot { impl PhysicsSnapshot { pub fn new( timestep_id: usize, - broad_phase: &BroadPhaseMultiSap, + broad_phase: &DefaultBroadPhase, narrow_phase: &NarrowPhase, island_manager: &IslandManager, bodies: &RigidBodySet, @@ -88,7 +88,7 @@ impl PhysicsSnapshot { pub struct PhysicsState { pub islands: IslandManager, - pub broad_phase: BroadPhaseMultiSap, + pub broad_phase: DefaultBroadPhase, pub narrow_phase: NarrowPhase, pub bodies: RigidBodySet, pub colliders: ColliderSet, @@ -112,7 +112,7 @@ impl PhysicsState { pub fn new() -> Self { Self { islands: IslandManager::new(), - broad_phase: BroadPhaseMultiSap::new(), + broad_phase: DefaultBroadPhase::new(), narrow_phase: NarrowPhase::new(), bodies: RigidBodySet::new(), colliders: ColliderSet::new(), -- cgit