diff options
| author | Crozet Sébastien <developer@crozet.re> | 2021-03-13 18:00:58 +0100 |
|---|---|---|
| committer | Crozet Sébastien <developer@crozet.re> | 2021-03-13 18:00:58 +0100 |
| commit | 3a1502be74901f3df96a05a7d479f15bd4f8b507 (patch) | |
| tree | bfa1ceb9664ddb853e94e9b1983388e4a2195faf /src/pipeline | |
| parent | a967ace7d426eea11b4132328574cc3a48790ea5 (diff) | |
| download | rapier-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.rs | 9 | ||||
| -rw-r--r-- | src/pipeline/physics_pipeline.rs | 13 |
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(); |
