diff options
| author | Sébastien Crozet <developer@crozet.re> | 2020-11-26 13:26:07 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-26 13:26:07 +0100 |
| commit | 51b7bf9a529175d0c6ec42775f11f16bd7fe719a (patch) | |
| tree | 68795351e593d961c119a86335fbba3e301da528 /src_testbed | |
| parent | bdf2e15fdcff4c4757b4875354b2d6e8b9c6939d (diff) | |
| parent | 340f614d32fbf32b48a63d1c381da67eec97b05d (diff) | |
| download | rapier-51b7bf9a529175d0c6ec42775f11f16bd7fe719a.tar.gz rapier-51b7bf9a529175d0c6ec42775f11f16bd7fe719a.tar.bz2 rapier-51b7bf9a529175d0c6ec42775f11f16bd7fe719a.zip | |
Merge pull request #69 from dimforge/rigid_body_modifications
Track some user-initiated rigid-body modifications
Diffstat (limited to 'src_testbed')
| -rw-r--r-- | src_testbed/engine.rs | 19 | ||||
| -rw-r--r-- | src_testbed/physx_backend.rs | 2 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src_testbed/engine.rs b/src_testbed/engine.rs index ff5e1ef..040c883 100644 --- a/src_testbed/engine.rs +++ b/src_testbed/engine.rs @@ -237,7 +237,7 @@ impl GraphicsManager { for collider_handle in bodies[handle].colliders() { let color = self.c2color.get(collider_handle).copied().unwrap_or(color); let collider = &colliders[*collider_handle]; - self.add_collider(window, *collider_handle, collider, color, &mut new_nodes); + self.do_add_collider(window, *collider_handle, collider, color, &mut new_nodes); } new_nodes.iter_mut().for_each(|n| n.update(colliders)); @@ -256,7 +256,22 @@ impl GraphicsManager { nodes.append(&mut new_nodes); } - fn add_collider( + pub fn add_collider( + &mut self, + window: &mut Window, + handle: ColliderHandle, + colliders: &ColliderSet, + ) { + let collider = &colliders[handle]; + let color = *self.b2color.get(&collider.parent()).unwrap(); + let color = self.c2color.get(&handle).copied().unwrap_or(color); + let mut nodes = + std::mem::replace(self.b2sn.get_mut(&collider.parent()).unwrap(), Vec::new()); + self.do_add_collider(window, handle, collider, color, &mut nodes); + self.b2sn.insert(collider.parent(), nodes); + } + + fn do_add_collider( &mut self, window: &mut Window, handle: ColliderHandle, diff --git a/src_testbed/physx_backend.rs b/src_testbed/physx_backend.rs index 7fcb813..acec5c9 100644 --- a/src_testbed/physx_backend.rs +++ b/src_testbed/physx_backend.rs @@ -402,7 +402,7 @@ impl PhysxWorld { pub fn sync(&self, bodies: &mut RigidBodySet, colliders: &mut ColliderSet) { for (rapier_handle, physx_handle) in self.rapier2physx.iter() { - let mut rb = bodies.get_mut(*rapier_handle).unwrap(); + let rb = bodies.get_mut(*rapier_handle).unwrap(); let ra = self.scene.get_rigid_actor(*physx_handle).unwrap(); let pos = ra.get_global_pose().into_na(); let iso = na::convert_unchecked(pos); |
