Added user-implementable traits for collision/proximity pair filtering.

This commit is contained in:
Crozet Sébastien
2020-10-27 16:11:20 +01:00
parent a52fb8d7e4
commit cc44b65094
6 changed files with 150 additions and 18 deletions

View File

@@ -7,7 +7,8 @@ use crate::dynamics::{IntegrationParameters, JointSet, RigidBodySet};
#[cfg(feature = "parallel")]
use crate::dynamics::{JointGraphEdge, ParallelIslandSolver as IslandSolver};
use crate::geometry::{
BroadPhase, BroadPhasePairEvent, ColliderPair, ColliderSet, ContactManifoldIndex, NarrowPhase,
BroadPhase, BroadPhasePairEvent, ColliderPair, ColliderSet, ContactManifoldIndex,
ContactPairFilter, NarrowPhase, ProximityPairFilter,
};
use crate::math::Vector;
use crate::pipeline::EventHandler;
@@ -68,6 +69,8 @@ impl PhysicsPipeline {
bodies: &mut RigidBodySet,
colliders: &mut ColliderSet,
joints: &mut JointSet,
contact_pair_filter: Option<&dyn ContactPairFilter>,
proximity_pair_filter: Option<&dyn ProximityPairFilter>,
events: &dyn EventHandler,
) {
self.counters.step_started();
@@ -112,12 +115,14 @@ impl PhysicsPipeline {
integration_parameters.prediction_distance,
bodies,
colliders,
contact_pair_filter,
events,
);
narrow_phase.compute_proximities(
integration_parameters.prediction_distance,
bodies,
colliders,
proximity_pair_filter,
events,
);
// println!("Compute contact time: {}", instant::now() - t);