From 9b87f06a856c4d673642e210f8b0986cfdbac3af Mon Sep 17 00:00:00 2001 From: Sébastien Crozet Date: Sun, 21 Jan 2024 21:02:23 +0100 Subject: feat: implement new "small-steps" solver + joint improvements --- src_testbed/testbed.rs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src_testbed/testbed.rs') diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs index 9b08e90..aac73e8 100644 --- a/src_testbed/testbed.rs +++ b/src_testbed/testbed.rs @@ -1,5 +1,6 @@ use std::env; use std::mem; +use std::num::NonZeroUsize; use bevy::prelude::*; @@ -147,6 +148,7 @@ pub struct TestbedGraphics<'a, 'b, 'c, 'd, 'e, 'f> { #[allow(dead_code)] // Dead in 2D but not in 3D. camera_transform: GlobalTransform, camera: &'a mut OrbitCamera, + keys: &'a Input, } pub struct Testbed<'a, 'b, 'c, 'd, 'e, 'f> { @@ -284,11 +286,7 @@ impl TestbedApp { self.harness .physics .integration_parameters - .max_velocity_iterations = 4; - self.harness - .physics - .integration_parameters - .max_stabilization_iterations = 1; + .num_solver_iterations = NonZeroUsize::new(4).unwrap(); // Init world. let mut testbed = Testbed { @@ -458,6 +456,10 @@ impl<'a, 'b, 'c, 'd, 'e, 'f> TestbedGraphics<'a, 'b, 'c, 'd, 'e, 'f> { colliders, ) } + + pub fn keys(&self) -> &Input { + &*self.keys + } } impl<'a, 'b, 'c, 'd, 'e, 'f> Testbed<'a, 'b, 'c, 'd, 'e, 'f> { @@ -910,7 +912,7 @@ impl<'a, 'b, 'c, 'd, 'e, 'f> Testbed<'a, 'b, 'c, 'd, 'e, 'f> { .multibody_joints .iter() .next() - .map(|a| a.2.rigid_body_handle()); + .map(|(_, _, _, link)| link.rigid_body_handle()); if let Some(to_delete) = to_delete { self.harness .physics @@ -1107,6 +1109,7 @@ fn update_testbed( components: &mut gfx_components, camera_transform: *cameras.single().1, camera: &mut cameras.single_mut().2, + keys: &*keys, }; let mut testbed = Testbed { @@ -1200,6 +1203,7 @@ fn update_testbed( components: &mut gfx_components, camera_transform: *cameras.single().1, camera: &mut cameras.single_mut().2, + keys: &*keys, }; let mut testbed = Testbed { @@ -1351,6 +1355,7 @@ fn update_testbed( components: &mut gfx_components, camera_transform: *cameras.single().1, camera: &mut cameras.single_mut().2, + keys: &*keys, }; harness.step_with_graphics(Some(&mut testbed_graphics)); -- cgit