aboutsummaryrefslogtreecommitdiff
path: root/src_testbed
diff options
context:
space:
mode:
authorSébastien Crozet <developer@crozet.re>2020-11-26 13:26:07 +0100
committerGitHub <noreply@github.com>2020-11-26 13:26:07 +0100
commit51b7bf9a529175d0c6ec42775f11f16bd7fe719a (patch)
tree68795351e593d961c119a86335fbba3e301da528 /src_testbed
parentbdf2e15fdcff4c4757b4875354b2d6e8b9c6939d (diff)
parent340f614d32fbf32b48a63d1c381da67eec97b05d (diff)
downloadrapier-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.rs19
-rw-r--r--src_testbed/physx_backend.rs2
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);