aboutsummaryrefslogtreecommitdiff
path: root/src/pipeline
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2021-03-13 18:00:58 +0100
committerCrozet Sébastien <developer@crozet.re>2021-03-13 18:00:58 +0100
commit3a1502be74901f3df96a05a7d479f15bd4f8b507 (patch)
treebfa1ceb9664ddb853e94e9b1983388e4a2195faf /src/pipeline
parenta967ace7d426eea11b4132328574cc3a48790ea5 (diff)
downloadrapier-3a1502be74901f3df96a05a7d479f15bd4f8b507.tar.gz
rapier-3a1502be74901f3df96a05a7d479f15bd4f8b507.tar.bz2
rapier-3a1502be74901f3df96a05a7d479f15bd4f8b507.zip
First complete implementation of the hierarchical SAP.
Diffstat (limited to 'src/pipeline')
-rw-r--r--src/pipeline/collision_pipeline.rs9
-rw-r--r--src/pipeline/physics_pipeline.rs13
2 files changed, 10 insertions, 12 deletions
diff --git a/src/pipeline/collision_pipeline.rs b/src/pipeline/collision_pipeline.rs
index a74a6e5..6255d60 100644
--- a/src/pipeline/collision_pipeline.rs
+++ b/src/pipeline/collision_pipeline.rs
@@ -47,10 +47,13 @@ impl CollisionPipeline {
bodies.maintain(colliders);
self.broadphase_collider_pairs.clear();
- broad_phase.update_aabbs(prediction_distance, bodies, colliders);
-
self.broad_phase_events.clear();
- broad_phase.find_pairs(&mut self.broad_phase_events);
+ broad_phase.update(
+ prediction_distance,
+ bodies,
+ colliders,
+ &mut self.broad_phase_events,
+ );
narrow_phase.register_pairs(colliders, bodies, &self.broad_phase_events, events);
diff --git a/src/pipeline/physics_pipeline.rs b/src/pipeline/physics_pipeline.rs
index 198c4be..1908fad 100644
--- a/src/pipeline/physics_pipeline.rs
+++ b/src/pipeline/physics_pipeline.rs
@@ -73,7 +73,6 @@ impl PhysicsPipeline {
) {
self.counters.step_started();
bodies.maintain(colliders);
- broad_phase.maintain(colliders);
narrow_phase.maintain(colliders, bodies);
// Update kinematic bodies velocities.
@@ -87,19 +86,15 @@ impl PhysicsPipeline {
self.counters.stages.collision_detection_time.start();
self.counters.cd.broad_phase_time.start();
+ self.broad_phase_events.clear();
self.broadphase_collider_pairs.clear();
- // let t = instant::now();
- broad_phase.update_aabbs(
+
+ broad_phase.update(
integration_parameters.prediction_distance,
bodies,
colliders,
+ &mut self.broad_phase_events,
);
- // println!("Update AABBs time: {}", instant::now() - t);
-
- // let t = instant::now();
- self.broad_phase_events.clear();
- broad_phase.find_pairs(&mut self.broad_phase_events);
- // println!("Find pairs time: {}", instant::now() - t);
narrow_phase.register_pairs(colliders, bodies, &self.broad_phase_events, events);
self.counters.cd.broad_phase_time.pause();