aboutsummaryrefslogtreecommitdiff
path: root/src/pipeline/physics_pipeline.rs
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2021-02-23 11:24:54 +0100
committerCrozet Sébastien <developer@crozet.re>2021-02-23 11:24:54 +0100
commit00706e8b360e132cb88a7b393dcedadf35403379 (patch)
treee2ab40056da30c614dc94fc0cb852d6207c19043 /src/pipeline/physics_pipeline.rs
parentad5c10672e36f47fbdb0667bccd79c59ff3a97cc (diff)
downloadrapier-00706e8b360e132cb88a7b393dcedadf35403379.tar.gz
rapier-00706e8b360e132cb88a7b393dcedadf35403379.tar.bz2
rapier-00706e8b360e132cb88a7b393dcedadf35403379.zip
Introduce the PhysicsHook trait used for both contact filtering and contact modification.
Diffstat (limited to 'src/pipeline/physics_pipeline.rs')
-rw-r--r--src/pipeline/physics_pipeline.rs11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/pipeline/physics_pipeline.rs b/src/pipeline/physics_pipeline.rs
index 293fa9d..c030b1d 100644
--- a/src/pipeline/physics_pipeline.rs
+++ b/src/pipeline/physics_pipeline.rs
@@ -7,8 +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,
- ContactPairFilter, IntersectionPairFilter, NarrowPhase,
+ BroadPhase, BroadPhasePairEvent, ColliderPair, ColliderSet, ContactManifoldIndex, NarrowPhase,
+ PhysicsHooks,
};
use crate::math::{Real, Vector};
use crate::pipeline::EventHandler;
@@ -69,8 +69,7 @@ impl PhysicsPipeline {
bodies: &mut RigidBodySet,
colliders: &mut ColliderSet,
joints: &mut JointSet,
- contact_pair_filter: Option<&dyn ContactPairFilter>,
- proximity_pair_filter: Option<&dyn IntersectionPairFilter>,
+ hooks: &dyn PhysicsHooks,
events: &dyn EventHandler,
) {
self.counters.step_started();
@@ -115,10 +114,10 @@ impl PhysicsPipeline {
integration_parameters.prediction_distance,
bodies,
colliders,
- contact_pair_filter,
+ hooks,
events,
);
- narrow_phase.compute_intersections(bodies, colliders, proximity_pair_filter, events);
+ narrow_phase.compute_intersections(bodies, colliders, hooks, events);
// println!("Compute contact time: {}", instant::now() - t);
self.counters.stages.island_construction_time.start();