diff options
| author | Sébastien Crozet <developer@crozet.re> | 2022-01-02 18:05:50 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-02 18:05:50 +0100 |
| commit | 1308db89948bc62fb865b32f832f19268f23dd23 (patch) | |
| tree | b3d8b0cbb6d2e75aa8fc7686e9cb8801527a31b8 /src_testbed/harness | |
| parent | 8e7da5ad45d180b0d3fa2bde37f8f3771b153b70 (diff) | |
| parent | 9f9d3293605fa84555c08bec5efe68a71cd18432 (diff) | |
| download | rapier-1308db89948bc62fb865b32f832f19268f23dd23.tar.gz rapier-1308db89948bc62fb865b32f832f19268f23dd23.tar.bz2 rapier-1308db89948bc62fb865b32f832f19268f23dd23.zip | |
Merge pull request #267 from dimforge/multibody
Implement multibody joints, and new velocity-based constraints solver
Diffstat (limited to 'src_testbed/harness')
| -rw-r--r-- | src_testbed/harness/mod.rs | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/src_testbed/harness/mod.rs b/src_testbed/harness/mod.rs index 0bc08d0..3358a70 100644 --- a/src_testbed/harness/mod.rs +++ b/src_testbed/harness/mod.rs @@ -3,7 +3,10 @@ use crate::{ TestbedGraphics, }; use plugin::HarnessPlugin; -use rapier::dynamics::{CCDSolver, IntegrationParameters, IslandManager, JointSet, RigidBodySet}; +use rapier::dynamics::{ + CCDSolver, ImpulseJointSet, IntegrationParameters, IslandManager, MultibodyJointSet, + RigidBodySet, +}; use rapier::geometry::{BroadPhase, ColliderSet, NarrowPhase}; use rapier::math::Vector; use rapier::pipeline::{ChannelEventCollector, PhysicsHooks, PhysicsPipeline, QueryPipeline}; @@ -78,9 +81,14 @@ impl Harness { } } - pub fn new(bodies: RigidBodySet, colliders: ColliderSet, joints: JointSet) -> Self { + pub fn new( + bodies: RigidBodySet, + colliders: ColliderSet, + impulse_joints: ImpulseJointSet, + multibody_joints: MultibodyJointSet, + ) -> Self { let mut res = Self::new_empty(); - res.set_world(bodies, colliders, joints); + res.set_world(bodies, colliders, impulse_joints, multibody_joints); res } @@ -100,24 +108,39 @@ impl Harness { &mut self.physics } - pub fn set_world(&mut self, bodies: RigidBodySet, colliders: ColliderSet, joints: JointSet) { - self.set_world_with_params(bodies, colliders, joints, Vector::y() * -9.81, ()) + pub fn set_world( + &mut self, + bodies: RigidBodySet, + colliders: ColliderSet, + impulse_joints: ImpulseJointSet, + multibody_joints: MultibodyJointSet, + ) { + self.set_world_with_params( + bodies, + colliders, + impulse_joints, + multibody_joints, + Vector::y() * -9.81, + (), + ) } pub fn set_world_with_params( &mut self, bodies: RigidBodySet, colliders: ColliderSet, - joints: JointSet, + impulse_joints: ImpulseJointSet, + multibody_joints: MultibodyJointSet, gravity: Vector<f32>, hooks: impl PhysicsHooks<RigidBodySet, ColliderSet> + 'static, ) { // println!("Num bodies: {}", bodies.len()); - // println!("Num joints: {}", joints.len()); + // println!("Num impulse_joints: {}", impulse_joints.len()); self.physics.gravity = gravity; self.physics.bodies = bodies; self.physics.colliders = colliders; - self.physics.joints = joints; + self.physics.impulse_joints = impulse_joints; + self.physics.multibody_joints = multibody_joints; self.physics.hooks = Box::new(hooks); self.physics.islands = IslandManager::new(); @@ -162,7 +185,8 @@ impl Harness { &mut physics.narrow_phase, &mut physics.bodies, &mut physics.colliders, - &mut physics.joints, + &mut physics.impulse_joints, + &mut physics.multibody_joints, &mut physics.ccd_solver, &*physics.hooks, event_handler, @@ -179,7 +203,8 @@ impl Harness { &mut self.physics.narrow_phase, &mut self.physics.bodies, &mut self.physics.colliders, - &mut self.physics.joints, + &mut self.physics.impulse_joints, + &mut self.physics.multibody_joints, &mut self.physics.ccd_solver, &*self.physics.hooks, &self.event_handler, |
