aboutsummaryrefslogtreecommitdiff
path: root/src_testbed
diff options
context:
space:
mode:
Diffstat (limited to 'src_testbed')
-rw-r--r--src_testbed/physics/mod.rs44
-rw-r--r--src_testbed/testbed.rs6
2 files changed, 25 insertions, 25 deletions
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<u8>,
}
+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<DeserializedPhysicsSnapshot> {
+ 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) {
diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs
index 5430384..780e23e 100644
--- a/src_testbed/testbed.rs
+++ b/src_testbed/testbed.rs
@@ -7,7 +7,7 @@ use std::num::NonZeroUsize;
use bevy::prelude::*;
use crate::debug_render::{DebugRenderPipelineResource, RapierDebugRenderPlugin};
-use crate::physics::{PhysicsEvents, PhysicsSnapshot, PhysicsState};
+use crate::physics::{DeserializedPhysicsSnapshot, PhysicsEvents, PhysicsSnapshot, PhysicsState};
use crate::plugin::TestbedPlugin;
use crate::ui;
use crate::{graphics::GraphicsManager, harness::RunState};
@@ -1271,7 +1271,7 @@ fn update_testbed(
.action_flags
.set(TestbedActionFlags::RESTORE_SNAPSHOT, false);
if let Some(snapshot) = &state.snapshot {
- if let Ok((
+ if let Ok(DeserializedPhysicsSnapshot {
timestep_id,
broad_phase,
narrow_phase,
@@ -1280,7 +1280,7 @@ fn update_testbed(
colliders,
impulse_joints,
multibody_joints,
- )) = snapshot.restore()
+ }) = snapshot.restore()
{
clear(&mut commands, &mut state, &mut graphics, &mut plugins);