aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2020-10-26 16:18:44 +0100
committerCrozet Sébastien <developer@crozet.re>2020-10-26 16:18:44 +0100
commit3fd4a62a2e4d6f5d97412bf80561c23ba43e40a5 (patch)
treebd3cb4afb71201a1c8fbbf80771a631bbc98cf62
parentd725aa4557b4c26343ba57b294d1ae5b337703e6 (diff)
downloadrapier-3fd4a62a2e4d6f5d97412bf80561c23ba43e40a5.tar.gz
rapier-3fd4a62a2e4d6f5d97412bf80561c23ba43e40a5.tar.bz2
rapier-3fd4a62a2e4d6f5d97412bf80561c23ba43e40a5.zip
Fix 2D compilation.
-rw-r--r--src/geometry/contact_generator/capsule_capsule_contact_generator.rs4
-rw-r--r--src/geometry/contact_generator/heightfield_shape_contact_generator.rs18
-rw-r--r--src/geometry/shape.rs1
3 files changed, 7 insertions, 16 deletions
diff --git a/src/geometry/contact_generator/capsule_capsule_contact_generator.rs b/src/geometry/contact_generator/capsule_capsule_contact_generator.rs
index ef18ad2..3104496 100644
--- a/src/geometry/contact_generator/capsule_capsule_contact_generator.rs
+++ b/src/geometry/contact_generator/capsule_capsule_contact_generator.rs
@@ -39,8 +39,8 @@ pub fn generate_contacts<'a>(
let pos12 = pos1.inverse() * pos2;
let pos21 = pos12.inverse();
- let seg1 = capsule1.segment();
- let seg2_1 = capsule2.segment().transformed(&pos12);
+ let seg1 = capsule1.segment;
+ let seg2_1 = capsule2.segment.transformed(&pos12);
let (loc1, loc2) = ncollide::query::closest_points_segment_segment_with_locations_nD(
(&seg1.a, &seg1.b),
(&seg2_1.a, &seg2_1.b),
diff --git a/src/geometry/contact_generator/heightfield_shape_contact_generator.rs b/src/geometry/contact_generator/heightfield_shape_contact_generator.rs
index e66bbac..d48eb1d 100644
--- a/src/geometry/contact_generator/heightfield_shape_contact_generator.rs
+++ b/src/geometry/contact_generator/heightfield_shape_contact_generator.rs
@@ -109,12 +109,9 @@ fn do_generate_contacts(
let shape_type2 = collider2.shape().shape_type();
heightfield1.map_elements_in_local_aabb(&ls_aabb2, &mut |i, part1, _| {
- let position1 = *collider1.position();
+ let position1 = collider1.position();
#[cfg(feature = "dim2")]
- let (position1, dpos1, sub_shape1) = {
- let (dpos, half_height) = crate::utils::segment_to_capsule(&part1.a, &part1.b);
- (position1 * dpos, dpos, Capsule::new(half_height, 0.0))
- };
+ let sub_shape1 = Capsule::new(part1.a, part1.b, 0.0);
#[cfg(feature = "dim3")]
let sub_shape1 = *part1;
@@ -154,7 +151,7 @@ fn do_generate_contacts(
shape1: collider2.shape(),
shape2: &sub_shape1,
position1: collider2.position(),
- position2: &position1,
+ position2: position1,
manifold,
workspace: sub_detector.workspace.as_deref_mut(),
}
@@ -165,20 +162,13 @@ fn do_generate_contacts(
collider2,
shape1: &sub_shape1,
shape2: collider2.shape(),
- position1: &position1,
+ position1: position1,
position2: collider2.position(),
manifold,
workspace: sub_detector.workspace.as_deref_mut(),
}
};
- #[cfg(feature = "dim2")]
- if coll_pair.collider1 != ctxt2.manifold.pair.collider1 {
- ctxt2.manifold.delta2 = collider1.position_wrt_parent() * dpos1;
- } else {
- ctxt2.manifold.delta1 = collider1.position_wrt_parent() * dpos1;
- }
-
(sub_detector.generator.generate_contacts)(&mut ctxt2)
});
diff --git a/src/geometry/shape.rs b/src/geometry/shape.rs
index 3f1ca04..54a156b 100644
--- a/src/geometry/shape.rs
+++ b/src/geometry/shape.rs
@@ -221,6 +221,7 @@ impl Shape for Capsule {
ShapeType::Capsule
}
+ #[cfg(feature = "dim3")]
fn as_polygonal_feature_map(&self) -> Option<(&dyn PolygonalFeatureMap, f32)> {
Some((&self.segment as &dyn PolygonalFeatureMap, self.radius))
}