aboutsummaryrefslogtreecommitdiff
path: root/src_testbed
diff options
context:
space:
mode:
authorrezural <rezural@protonmail.com>2020-12-24 21:42:46 +1100
committerrezural <rezural@protonmail.com>2020-12-24 21:42:59 +1100
commit5fce09cb52f7c24662650a998d279433a324e517 (patch)
treec062d50398dcc8a77624509aeaa6ac8267268e22 /src_testbed
parent31032ab96978a32811319bb911b4e8e905918fe7 (diff)
downloadrapier-5fce09cb52f7c24662650a998d279433a324e517.tar.gz
rapier-5fce09cb52f7c24662650a998d279433a324e517.tar.bz2
rapier-5fce09cb52f7c24662650a998d279433a324e517.zip
rework some threading code with the ui
Diffstat (limited to 'src_testbed')
-rw-r--r--src_testbed/harness/mod.rs4
-rw-r--r--src_testbed/testbed.rs3
-rw-r--r--src_testbed/ui.rs12
3 files changed, 12 insertions, 7 deletions
diff --git a/src_testbed/harness/mod.rs b/src_testbed/harness/mod.rs
index 228ffe0..916823e 100644
--- a/src_testbed/harness/mod.rs
+++ b/src_testbed/harness/mod.rs
@@ -10,6 +10,8 @@ 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,
}
@@ -28,6 +30,8 @@ impl RunState {
Self {
#[cfg(feature = "parallel")]
thread_pool: thread_pool,
+ #[cfg(feature = "parallel")]
+ num_threads,
timestep_id: 0,
time: 0.0,
}
diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs
index bb663e7..949afe7 100644
--- a/src_testbed/testbed.rs
+++ b/src_testbed/testbed.rs
@@ -115,7 +115,6 @@ pub struct TestbedState {
pub selected_example: usize,
pub selected_backend: usize,
pub physx_use_two_friction_directions: bool,
- pub num_threads: usize,
pub snapshot: Option<PhysicsSnapshot>,
}
@@ -180,7 +179,6 @@ impl Testbed {
selected_example: 0,
selected_backend: RAPIER_BACKEND,
physx_use_two_friction_directions: true,
- num_threads,
};
let harness = Harness::new_empty();
@@ -1027,6 +1025,7 @@ impl State for Testbed {
window,
&mut self.harness.physics.integration_parameters,
&mut self.state,
+ &mut self.harness.state
);
}
diff --git a/src_testbed/ui.rs b/src_testbed/ui.rs
index f88db9d..f72ca73 100644
--- a/src_testbed/ui.rs
+++ b/src_testbed/ui.rs
@@ -3,6 +3,7 @@ use kiss3d::window::Window;
use rapier::dynamics::IntegrationParameters;
use crate::testbed::{RunMode, TestbedActionFlags, TestbedState, TestbedStateFlags};
+use crate::harness::RunState;
const SIDEBAR_W: f64 = 200.0;
const ELEMENT_W: f64 = SIDEBAR_W - 20.0;
@@ -98,6 +99,7 @@ impl TestbedUi {
window: &mut Window,
integration_parameters: &mut IntegrationParameters,
state: &mut TestbedState,
+ run_state: &mut RunState,
) {
let ui_root = window.conrod_ui().window;
let mut ui = window.conrod_ui_mut().set_widgets();
@@ -254,7 +256,7 @@ impl TestbedUi {
let curr_vel_iters = integration_parameters.max_velocity_iterations;
let curr_pos_iters = integration_parameters.max_position_iterations;
#[cfg(feature = "parallel")]
- let curr_num_threads = state.num_threads;
+ let curr_num_threads = run_state.num_threads;
let curr_max_ccd_substeps = integration_parameters.max_ccd_substeps;
let curr_min_island_size = integration_parameters.min_island_size;
let curr_warmstart_coeff = integration_parameters.warmstart_coeff;
@@ -305,10 +307,10 @@ impl TestbedUi {
.w_h(ELEMENT_W, ELEMENT_H)
.set(self.ids.slider_num_threads, &mut ui)
{
- if state.num_threads != val as usize {
- state.num_threads = val as usize;
- state.thread_pool = rapier::rayon::ThreadPoolBuilder::new()
- .num_threads(state.num_threads)
+ if run_state.num_threads != val as usize {
+ run_state.num_threads = val as usize;
+ run_state.thread_pool = rapier::rayon::ThreadPoolBuilder::new()
+ .num_threads(run_state.num_threads)
.build()
.unwrap();
}