aboutsummaryrefslogtreecommitdiff
path: root/src_testbed/harness
diff options
context:
space:
mode:
authorSébastien Crozet <developer@crozet.re>2021-05-01 10:17:23 +0200
committerGitHub <noreply@github.com>2021-05-01 10:17:23 +0200
commita385efc5582c7918f11c01a2b6bf26a46919d3a0 (patch)
treec5b9c5e6fcb5561421e2b4b9d99f28e4c83c745e /src_testbed/harness
parentaaf80bfa872c6f29b248cab8eb5658ab0d73cb4a (diff)
parent2dfbd9ae92c139e306afc87994adac82489f30eb (diff)
downloadrapier-a385efc5582c7918f11c01a2b6bf26a46919d3a0.tar.gz
rapier-a385efc5582c7918f11c01a2b6bf26a46919d3a0.tar.bz2
rapier-a385efc5582c7918f11c01a2b6bf26a46919d3a0.zip
Merge pull request #183 from dimforge/bundles
Make Rapier accept any kind of data storage instead of RigidBodySet/ColliderSet
Diffstat (limited to 'src_testbed/harness')
-rw-r--r--src_testbed/harness/mod.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/src_testbed/harness/mod.rs b/src_testbed/harness/mod.rs
index 5fcc45c..e37e63d 100644
--- a/src_testbed/harness/mod.rs
+++ b/src_testbed/harness/mod.rs
@@ -4,7 +4,7 @@ use crate::{
};
use kiss3d::window::Window;
use plugin::HarnessPlugin;
-use rapier::dynamics::{CCDSolver, IntegrationParameters, JointSet, RigidBodySet};
+use rapier::dynamics::{CCDSolver, IntegrationParameters, IslandManager, JointSet, RigidBodySet};
use rapier::geometry::{BroadPhase, ColliderSet, NarrowPhase};
use rapier::math::Vector;
use rapier::pipeline::{ChannelEventCollector, PhysicsHooks, PhysicsPipeline, QueryPipeline};
@@ -120,7 +120,7 @@ impl Harness {
colliders: ColliderSet,
joints: JointSet,
gravity: Vector<f32>,
- hooks: impl PhysicsHooks + 'static,
+ hooks: impl PhysicsHooks<RigidBodySet, ColliderSet> + 'static,
) {
// println!("Num bodies: {}", bodies.len());
// println!("Num joints: {}", joints.len());
@@ -130,6 +130,7 @@ impl Harness {
self.physics.joints = joints;
self.physics.hooks = Box::new(hooks);
+ self.physics.islands = IslandManager::new();
self.physics.broad_phase = BroadPhase::new();
self.physics.narrow_phase = NarrowPhase::new();
self.state.timestep_id = 0;
@@ -175,6 +176,7 @@ impl Harness {
physics.pipeline.step(
&physics.gravity,
&physics.integration_parameters,
+ &mut physics.islands,
&mut physics.broad_phase,
&mut physics.narrow_phase,
&mut physics.bodies,
@@ -191,6 +193,7 @@ impl Harness {
self.physics.pipeline.step(
&self.physics.gravity,
&self.physics.integration_parameters,
+ &mut self.physics.islands,
&mut self.physics.broad_phase,
&mut self.physics.narrow_phase,
&mut self.physics.bodies,
@@ -201,9 +204,11 @@ impl Harness {
&self.event_handler,
);
- self.physics
- .query_pipeline
- .update(&self.physics.bodies, &self.physics.colliders);
+ self.physics.query_pipeline.update(
+ &self.physics.islands,
+ &self.physics.bodies,
+ &self.physics.colliders,
+ );
for plugin in &mut self.plugins {
plugin.step(&mut self.physics, &self.state)