aboutsummaryrefslogtreecommitdiff
path: root/src_testbed/testbed.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src_testbed/testbed.rs')
-rw-r--r--src_testbed/testbed.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs
index aac73e8..50e6c7a 100644
--- a/src_testbed/testbed.rs
+++ b/src_testbed/testbed.rs
@@ -101,6 +101,12 @@ bitflags! {
}
}
+#[derive(Copy, Clone, Debug, PartialEq, Eq)]
+pub enum RapierSolverType {
+ SmallStepsPgs,
+ StandardPgs,
+}
+
#[derive(Resource)]
pub struct TestbedState {
pub running: RunMode,
@@ -121,6 +127,7 @@ pub struct TestbedState {
pub example_names: Vec<&'static str>,
pub selected_example: usize,
pub selected_backend: usize,
+ pub solver_type: RapierSolverType,
pub physx_use_two_friction_directions: bool,
pub snapshot: Option<PhysicsSnapshot>,
nsteps: usize,
@@ -204,6 +211,7 @@ impl TestbedApp {
example_names: Vec::new(),
selected_example: 0,
selected_backend: RAPIER_BACKEND,
+ solver_type: RapierSolverType::SmallStepsPgs,
physx_use_two_friction_directions: true,
nsteps: 1,
camera_locked: false,
@@ -1189,6 +1197,14 @@ fn update_testbed(
if state.selected_example != prev_example {
harness.physics.integration_parameters = IntegrationParameters::default();
+
+ match state.solver_type {
+ RapierSolverType::SmallStepsPgs => {} // It’s already the default.
+ RapierSolverType::StandardPgs => harness
+ .physics
+ .integration_parameters
+ .switch_to_standard_pgs_solver(),
+ }
}
let selected_example = state.selected_example;