From 1bef66fea941307a7305ddaebdb0abe3d0cb281f Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 25 May 2021 11:00:13 +0200 Subject: Add prelude + use vectors for setting linvel/translation in builders --- src_testbed/box2d_backend.rs | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'src_testbed/box2d_backend.rs') 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) { - 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()), + ); } } } -- cgit