aboutsummaryrefslogtreecommitdiff
path: root/src/pipeline/collision_pipeline.rs
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2020-10-27 16:11:20 +0100
committerCrozet Sébastien <developer@crozet.re>2020-10-27 16:12:40 +0100
commitcc44b65094766aab40561f22431a95877ed5ff11 (patch)
tree252d5e89b568a845446563af2dbd0e08f49ae7d2 /src/pipeline/collision_pipeline.rs
parenta52fb8d7e4649dce02e2131d848b84166df82d64 (diff)
downloadrapier-cc44b65094766aab40561f22431a95877ed5ff11.tar.gz
rapier-cc44b65094766aab40561f22431a95877ed5ff11.tar.bz2
rapier-cc44b65094766aab40561f22431a95877ed5ff11.zip
Added user-implementable traits for collision/proximity pair filtering.
Diffstat (limited to 'src/pipeline/collision_pipeline.rs')
-rw-r--r--src/pipeline/collision_pipeline.rs23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/pipeline/collision_pipeline.rs b/src/pipeline/collision_pipeline.rs
index 5a19e52..b8896e8 100644
--- a/src/pipeline/collision_pipeline.rs
+++ b/src/pipeline/collision_pipeline.rs
@@ -1,7 +1,10 @@
//! Physics pipeline structures.
use crate::dynamics::{JointSet, RigidBodySet};
-use crate::geometry::{BroadPhase, BroadPhasePairEvent, ColliderPair, ColliderSet, NarrowPhase};
+use crate::geometry::{
+ BroadPhase, BroadPhasePairEvent, ColliderPair, ColliderSet, ContactPairFilter, NarrowPhase,
+ ProximityPairFilter,
+};
use crate::pipeline::EventHandler;
/// The collision pipeline, responsible for performing collision detection between colliders.
@@ -40,6 +43,8 @@ impl CollisionPipeline {
narrow_phase: &mut NarrowPhase,
bodies: &mut RigidBodySet,
colliders: &mut ColliderSet,
+ contact_pair_filter: Option<&dyn ContactPairFilter>,
+ proximity_pair_filter: Option<&dyn ProximityPairFilter>,
events: &dyn EventHandler,
) {
bodies.maintain_active_set();
@@ -52,8 +57,20 @@ impl CollisionPipeline {
narrow_phase.register_pairs(colliders, bodies, &self.broad_phase_events, events);
- narrow_phase.compute_contacts(prediction_distance, bodies, colliders, events);
- narrow_phase.compute_proximities(prediction_distance, bodies, colliders, events);
+ narrow_phase.compute_contacts(
+ prediction_distance,
+ bodies,
+ colliders,
+ contact_pair_filter,
+ events,
+ );
+ narrow_phase.compute_proximities(
+ prediction_distance,
+ bodies,
+ colliders,
+ proximity_pair_filter,
+ events,
+ );
bodies.update_active_set_with_contacts(
colliders,