aboutsummaryrefslogtreecommitdiff
path: root/src_testbed/box2d_backend.rs
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2021-05-25 11:00:13 +0200
committerCrozet Sébastien <developer@crozet.re>2021-05-25 11:00:13 +0200
commit1bef66fea941307a7305ddaebdb0abe3d0cb281f (patch)
tree450bc3cd2fd611f91cb7d7809edcc4260f043b0b /src_testbed/box2d_backend.rs
parent47139323e01f978a94ed7aa2c33bbf63b00f4c30 (diff)
downloadrapier-1bef66fea941307a7305ddaebdb0abe3d0cb281f.tar.gz
rapier-1bef66fea941307a7305ddaebdb0abe3d0cb281f.tar.bz2
rapier-1bef66fea941307a7305ddaebdb0abe3d0cb281f.zip
Add prelude + use vectors for setting linvel/translation in builders
Diffstat (limited to 'src_testbed/box2d_backend.rs')
-rw-r--r--src_testbed/box2d_backend.rs25
1 files changed, 18 insertions, 7 deletions
diff --git a/src_testbed/box2d_backend.rs b/src_testbed/box2d_backend.rs
index db0f846..f0bffa3 100644
--- a/src_testbed/box2d_backend.rs
+++ b/src_testbed/box2d_backend.rs
@@ -87,9 +87,11 @@ impl Box2dWorld {
fn insert_colliders(&mut self, colliders: &ColliderSet) {
for (_, collider) in colliders.iter() {
- let b2_body_handle = self.rapier2box2d[&collider.parent()];
- let mut b2_body = self.world.body_mut(b2_body_handle);
- Self::create_fixture(&collider, &mut *b2_body);
+ if let Some(parent) = collider.parent() {
+ let b2_body_handle = self.rapier2box2d[&parent];
+ let mut b2_body = self.world.body_mut(b2_body_handle);
+ Self::create_fixture(&collider, &mut *b2_body);
+ }
}
}
@@ -122,8 +124,8 @@ impl Box2dWorld {
body_a,
body_b,
collide_connected: true,
- local_anchor_a: na_vec_to_b2_vec(params.local_anchor1.translation.vector),
- local_anchor_b: na_vec_to_b2_vec(params.local_anchor2.translation.vector),
+ local_anchor_a: na_vec_to_b2_vec(params.local_frame1.translation.vector),
+ local_anchor_b: na_vec_to_b2_vec(params.local_frame2.translation.vector),
reference_angle: 0.0,
frequency: 0.0,
damping_ratio: 0.0,
@@ -155,7 +157,14 @@ impl Box2dWorld {
}
fn create_fixture(collider: &Collider, body: &mut b2::MetaBody<NoUserData>) {
- let center = na_vec_to_b2_vec(collider.position_wrt_parent().translation.vector);
+ let center = na_vec_to_b2_vec(
+ collider
+ .position_wrt_parent()
+ .copied()
+ .unwrap_or(na::one())
+ .translation
+ .vector,
+ );
let mut fixture_def = b2::FixtureDef::new();
fixture_def.restitution = collider.material().restitution;
@@ -230,7 +239,9 @@ impl Box2dWorld {
for coll_handle in body.colliders() {
let collider = &mut colliders[*coll_handle];
- collider.set_position_debug(pos * collider.position_wrt_parent());
+ collider.set_position(
+ pos * collider.position_wrt_parent().copied().unwrap_or(na::one()),
+ );
}
}
}