aboutsummaryrefslogtreecommitdiff
path: root/src/pipeline
diff options
context:
space:
mode:
authorSébastien Crozet <sebcrozet@dimforge.com>2024-04-07 22:17:35 +0200
committerSébastien Crozet <sebastien@crozet.re>2024-04-30 23:10:46 +0200
commit7cbbb8e87b2710e819ca179b2f43c1a7633aedfa (patch)
treedc8d489ce8ccd9fc75ad2ed122f5b8275458b55c /src/pipeline
parent996400726927fb952999afbc36db6e2bfba7d44e (diff)
downloadrapier-7cbbb8e87b2710e819ca179b2f43c1a7633aedfa.tar.gz
rapier-7cbbb8e87b2710e819ca179b2f43c1a7633aedfa.tar.bz2
rapier-7cbbb8e87b2710e819ca179b2f43c1a7633aedfa.zip
feat: add Collider::heightfield_with_flags
Diffstat (limited to 'src/pipeline')
-rw-r--r--src/pipeline/collision_pipeline.rs1
-rw-r--r--src/pipeline/query_pipeline.rs15
2 files changed, 11 insertions, 5 deletions
diff --git a/src/pipeline/collision_pipeline.rs b/src/pipeline/collision_pipeline.rs
index 66bd9ad..f8bee80 100644
--- a/src/pipeline/collision_pipeline.rs
+++ b/src/pipeline/collision_pipeline.rs
@@ -80,6 +80,7 @@ impl CollisionPipeline {
narrow_phase.register_pairs(None, colliders, bodies, &self.broad_phase_events, events);
narrow_phase.compute_contacts(
prediction_distance,
+ 0.0,
bodies,
colliders,
&ImpulseJointSet::new(),
diff --git a/src/pipeline/query_pipeline.rs b/src/pipeline/query_pipeline.rs
index 4dc5652..59af7c6 100644
--- a/src/pipeline/query_pipeline.rs
+++ b/src/pipeline/query_pipeline.rs
@@ -6,8 +6,8 @@ use crate::math::{Isometry, Point, Real, Vector};
use crate::{dynamics::RigidBodySet, geometry::ColliderSet};
use parry::partitioning::{QbvhDataGenerator, QbvhUpdateWorkspace};
use parry::query::details::{
- NonlinearTOICompositeShapeShapeBestFirstVisitor, PointCompositeShapeProjBestFirstVisitor,
- PointCompositeShapeProjWithFeatureBestFirstVisitor,
+ NonlinearTOICompositeShapeShapeBestFirstVisitor, NormalConstraints,
+ PointCompositeShapeProjBestFirstVisitor, PointCompositeShapeProjWithFeatureBestFirstVisitor,
RayCompositeShapeToiAndNormalBestFirstVisitor, RayCompositeShapeToiBestFirstVisitor,
TOICompositeShapeShapeBestFirstVisitor,
};
@@ -246,17 +246,22 @@ pub enum QueryPipelineMode {
impl<'a> TypedSimdCompositeShape for QueryPipelineAsCompositeShape<'a> {
type PartShape = dyn Shape;
+ type PartNormalConstraints = dyn NormalConstraints;
type PartId = ColliderHandle;
type QbvhStorage = DefaultStorage;
fn map_typed_part_at(
&self,
shape_id: Self::PartId,
- mut f: impl FnMut(Option<&Isometry<Real>>, &Self::PartShape),
+ mut f: impl FnMut(
+ Option<&Isometry<Real>>,
+ &Self::PartShape,
+ Option<&Self::PartNormalConstraints>,
+ ),
) {
if let Some(co) = self.colliders.get(shape_id) {
if self.filter.test(self.bodies, shape_id, co) {
- f(Some(&co.pos), &*co.shape)
+ f(Some(&co.pos), &*co.shape, None)
}
}
}
@@ -264,7 +269,7 @@ impl<'a> TypedSimdCompositeShape for QueryPipelineAsCompositeShape<'a> {
fn map_untyped_part_at(
&self,
shape_id: Self::PartId,
- f: impl FnMut(Option<&Isometry<Real>>, &Self::PartShape),
+ f: impl FnMut(Option<&Isometry<Real>>, &Self::PartShape, Option<&dyn NormalConstraints>),
) {
self.map_typed_part_at(shape_id, f);
}