diff options
| author | Crozet Sébastien <developer@crozet.re> | 2021-01-22 16:33:31 +0100 |
|---|---|---|
| committer | Crozet Sébastien <developer@crozet.re> | 2021-01-22 16:33:55 +0100 |
| commit | 99c2184e134b40cca9cb22fe93a95a64295ae048 (patch) | |
| tree | 06dfa0193e1c988d91097dc843eb63f591d105c8 /src_testbed | |
| parent | aa838279a69cc287291d9079f1b82114f1339d7a (diff) | |
| download | rapier-99c2184e134b40cca9cb22fe93a95a64295ae048.tar.gz rapier-99c2184e134b40cca9cb22fe93a95a64295ae048.tar.bz2 rapier-99c2184e134b40cca9cb22fe93a95a64295ae048.zip | |
Fix regressions introduced by the merge with master.
Diffstat (limited to 'src_testbed')
| -rw-r--r-- | src_testbed/harness/mod.rs | 8 | ||||
| -rw-r--r-- | src_testbed/testbed.rs | 68 | ||||
| -rw-r--r-- | src_testbed/ui.rs | 2 |
3 files changed, 50 insertions, 28 deletions
diff --git a/src_testbed/harness/mod.rs b/src_testbed/harness/mod.rs index 413ef52..1006e08 100644 --- a/src_testbed/harness/mod.rs +++ b/src_testbed/harness/mod.rs @@ -14,7 +14,6 @@ pub mod plugin; pub struct RunState { #[cfg(feature = "parallel")] pub thread_pool: rapier::rayon::ThreadPool, - #[cfg(feature = "parallel")] pub num_threads: usize, pub timestep_id: usize, pub time: f32, @@ -24,6 +23,8 @@ impl RunState { pub fn new() -> Self { #[cfg(feature = "parallel")] let num_threads = num_cpus::get_physical(); + #[cfg(not(feature = "parallel"))] + let num_threads = 1; #[cfg(feature = "parallel")] let thread_pool = rapier::rayon::ThreadPoolBuilder::new() @@ -34,7 +35,6 @@ impl RunState { Self { #[cfg(feature = "parallel")] thread_pool: thread_pool, - #[cfg(feature = "parallel")] num_threads, timestep_id: 0, time: 0.0, @@ -111,6 +111,10 @@ impl Harness { &mut self.physics.integration_parameters } + pub fn clear_callbacks(&mut self) { + self.callbacks.clear(); + } + pub fn physics_state_mut(&mut self) -> &mut PhysicsState { &mut self.physics } diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs index ae73929..461648c 100644 --- a/src_testbed/testbed.rs +++ b/src_testbed/testbed.rs @@ -25,7 +25,6 @@ use rapier::geometry::{ColliderHandle, ColliderSet, NarrowPhase}; #[cfg(feature = "dim3")] use rapier::geometry::{InteractionGroups, Ray}; use rapier::math::{Isometry, Vector}; -use rapier::pipeline::{ChannelEventCollector, PhysicsPipeline, QueryPipeline}; #[cfg(all(feature = "dim2", feature = "other-backends"))] use crate::box2d_backend::Box2dWorld; @@ -284,11 +283,11 @@ impl Testbed { || self.state.selected_backend == PHYSX_BACKEND_TWO_FRICTION_DIR { self.physx = Some(PhysxWorld::from_rapier( - physics.gravity, - &physics.integration_parameters, - &physics.bodies, - &physics.colliders, - &physics.joints, + self.harness.physics.gravity, + &self.harness.physics.integration_parameters, + &self.harness.physics.bodies, + &self.harness.physics.colliders, + &self.harness.physics.joints, self.state.selected_backend == PHYSX_BACKEND_TWO_FRICTION_DIR, self.harness.state.num_threads, )); @@ -299,10 +298,10 @@ impl Testbed { { if self.state.selected_backend == NPHYSICS_BACKEND { self.nphysics = Some(NPhysicsWorld::from_rapier( - physics.gravity, - &physics.bodies, - &physics.colliders, - &physics.joints, + self.harness.physics.gravity, + &self.harness.physics.bodies, + &self.harness.physics.colliders, + &self.harness.physics.joints, )); } } @@ -501,7 +500,7 @@ impl Testbed { // println!("Step"); self.physx.as_mut().unwrap().step( &mut self.harness.physics.pipeline.counters, - &physics.integration_parameters, + &self.harness.physics.integration_parameters, ); self.physx.as_mut().unwrap().sync( &mut self.harness.physics.bodies, @@ -515,7 +514,7 @@ impl Testbed { if self.state.selected_backend == NPHYSICS_BACKEND { self.nphysics.as_mut().unwrap().step( &mut self.harness.physics.pipeline.counters, - &physics.integration_parameters, + &self.harness.physics.integration_parameters, ); self.nphysics.as_mut().unwrap().sync( &mut self.harness.physics.bodies, @@ -986,7 +985,7 @@ impl Testbed { ); if let Some((handle, _)) = hit { - let collider = &self.physics.colliders[handle]; + let collider = &physics.colliders[handle]; if physics.bodies[collider.parent()].is_dynamic() { self.state.highlighted_body = Some(collider.parent()); for node in self.graphics.body_nodes_mut(collider.parent()).unwrap() { @@ -1073,9 +1072,28 @@ impl State for Testbed { .action_flags .set(TestbedActionFlags::EXAMPLE_CHANGED, false); self.clear(window); + self.harness.clear_callbacks(); if self.state.selected_example != prev_example { self.harness.physics.integration_parameters = IntegrationParameters::default(); + + if cfg!(feature = "dim3") + && (self.state.selected_backend == PHYSX_BACKEND_PATCH_FRICTION + || self.state.selected_backend == PHYSX_BACKEND_TWO_FRICTION_DIR) + { + std::mem::swap( + &mut self + .harness + .physics + .integration_parameters + .max_velocity_iterations, + &mut self + .harness + .physics + .integration_parameters + .max_position_iterations, + ) + } } self.builders[self.state.selected_example].1(self); @@ -1269,13 +1287,13 @@ impl State for Testbed { { // println!("Step"); self.physx.as_mut().unwrap().step( - &mut physics.pipeline.counters, - &physics.integration_parameters, + &mut self.harness.physics.pipeline.counters, + &self.harness.physics.integration_parameters, + ); + self.physx.as_mut().unwrap().sync( + &mut self.harness.physics.bodies, + &mut self.harness.physics.colliders, ); - self.physx - .as_mut() - .unwrap() - .sync(&mut physics.bodies, &mut physics.colliders); } } @@ -1283,13 +1301,13 @@ impl State for Testbed { { if self.state.selected_backend == NPHYSICS_BACKEND { self.nphysics.as_mut().unwrap().step( - &mut physics.pipeline.counters, - &physics.integration_parameters, + &mut self.harness.physics.pipeline.counters, + &self.harness.physics.integration_parameters, + ); + self.nphysics.as_mut().unwrap().sync( + &mut self.harness.physics.bodies, + &mut self.harness.physics.colliders, ); - self.nphysics - .as_mut() - .unwrap() - .sync(&mut physics.bodies, &mut physics.colliders); } } diff --git a/src_testbed/ui.rs b/src_testbed/ui.rs index 1b9084c..4c511f2 100644 --- a/src_testbed/ui.rs +++ b/src_testbed/ui.rs @@ -99,7 +99,7 @@ impl TestbedUi { window: &mut Window, integration_parameters: &mut IntegrationParameters, state: &mut TestbedState, - run_state: &mut RunState, + _run_state: &mut RunState, ) { let ui_root = window.conrod_ui().window; let mut ui = window.conrod_ui_mut().set_widgets(); |
