diff options
Diffstat (limited to 'src_testbed/testbed.rs')
| -rw-r--r-- | src_testbed/testbed.rs | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs index bb3d8ee..fd6b9a0 100644 --- a/src_testbed/testbed.rs +++ b/src_testbed/testbed.rs @@ -3,10 +3,10 @@ use std::mem; use std::path::Path; use std::rc::Rc; -use crate::engine::GraphicsManager; -use crate::physics::{PhysicsSnapshot, PhysicsState}; +use crate::physics::{PhysicsEvents, PhysicsSnapshot, PhysicsState}; use crate::plugin::TestbedPlugin; use crate::ui::TestbedUi; +use crate::{engine::GraphicsManager, harness::RunState}; use kiss3d::camera::Camera; use kiss3d::event::Event; @@ -392,6 +392,21 @@ impl Testbed { self.plugins.clear(); } + pub fn add_callback< + F: FnMut( + Option<&mut Window>, + Option<&mut GraphicsManager>, + &mut PhysicsState, + &PhysicsEvents, + &RunState, + ) + 'static, + >( + &mut self, + callback: F, + ) { + self.harness.add_callback(callback); + } + pub fn add_plugin(&mut self, plugin: impl TestbedPlugin + 'static) { self.plugins.push(Box::new(plugin)); } @@ -1221,7 +1236,9 @@ impl State for Testbed { if self.state.running != RunMode::Stop { for _ in 0..self.nsteps { if self.state.selected_backend == RAPIER_BACKEND { - self.harness.step(); + let graphics = &mut self.graphics; + self.harness + .step_with_graphics(Some(window), Some(graphics)); for plugin in &mut self.plugins { plugin.step(&mut self.harness.physics) |
