aboutsummaryrefslogtreecommitdiff
path: root/src/pipeline/collision_pipeline.rs
diff options
context:
space:
mode:
authorSébastien Crozet <developer@crozet.re>2022-04-19 18:57:40 +0200
committerSébastien Crozet <sebastien@crozet.re>2022-04-20 19:02:49 +0200
commit2b1374c596957ac8cabe085859be3b823a1ba0c6 (patch)
treea7f37ec29199a5a2c6198a6b001e665524fdab96 /src/pipeline/collision_pipeline.rs
parentee679427cda6363e4de94a59e293d01133a44d1f (diff)
downloadrapier-2b1374c596957ac8cabe085859be3b823a1ba0c6.tar.gz
rapier-2b1374c596957ac8cabe085859be3b823a1ba0c6.tar.bz2
rapier-2b1374c596957ac8cabe085859be3b823a1ba0c6.zip
First round deleting the component sets.
Diffstat (limited to 'src/pipeline/collision_pipeline.rs')
-rw-r--r--src/pipeline/collision_pipeline.rs66
1 files changed, 14 insertions, 52 deletions
diff --git a/src/pipeline/collision_pipeline.rs b/src/pipeline/collision_pipeline.rs
index 009dfa9..48a11e7 100644
--- a/src/pipeline/collision_pipeline.rs
+++ b/src/pipeline/collision_pipeline.rs
@@ -1,14 +1,8 @@
//! Physics pipeline structures.
-use crate::data::{ComponentSet, ComponentSetMut, ComponentSetOption};
-use crate::dynamics::{
- RigidBodyActivation, RigidBodyChanges, RigidBodyColliders, RigidBodyDominance, RigidBodyHandle,
- RigidBodyIds, RigidBodyMassProps, RigidBodyPosition, RigidBodyType, RigidBodyVelocity,
-};
+use crate::dynamics::RigidBodyHandle;
use crate::geometry::{
- BroadPhase, BroadPhasePairEvent, ColliderBroadPhaseData, ColliderChanges, ColliderFlags,
- ColliderHandle, ColliderMassProps, ColliderMaterial, ColliderPair, ColliderParent,
- ColliderPosition, ColliderShape, ColliderType, NarrowPhase,
+ BroadPhase, BroadPhasePairEvent, ColliderChanges, ColliderHandle, ColliderPair, NarrowPhase,
};
use crate::math::Real;
use crate::pipeline::{EventHandler, PhysicsHooks};
@@ -48,32 +42,19 @@ impl CollisionPipeline {
}
}
- fn detect_collisions<Bodies, Colliders>(
+ fn detect_collisions(
&mut self,
prediction_distance: Real,
broad_phase: &mut BroadPhase,
narrow_phase: &mut NarrowPhase,
- bodies: &mut Bodies,
- colliders: &mut Colliders,
+ bodies: &mut RigidBodySet,
+ colliders: &mut ColliderSet,
modified_colliders: &[ColliderHandle],
removed_colliders: &[ColliderHandle],
- hooks: &dyn PhysicsHooks<Bodies, Colliders>,
+ hooks: &dyn PhysicsHooks,
events: &dyn EventHandler,
handle_user_changes: bool,
- ) where
- Bodies: ComponentSetMut<RigidBodyActivation>
- + ComponentSet<RigidBodyType>
- + ComponentSetMut<RigidBodyIds>
- + ComponentSet<RigidBodyDominance>,
- Colliders: ComponentSetMut<ColliderBroadPhaseData>
- + ComponentSet<ColliderChanges>
- + ComponentSet<ColliderPosition>
- + ComponentSet<ColliderShape>
- + ComponentSetOption<ColliderParent>
- + ComponentSet<ColliderType>
- + ComponentSet<ColliderMaterial>
- + ComponentSet<ColliderFlags>,
- {
+ ) {
// Update broad-phase.
self.broad_phase_events.clear();
self.broadphase_collider_pairs.clear();
@@ -112,7 +93,7 @@ impl CollisionPipeline {
fn clear_modified_colliders(
&mut self,
- colliders: &mut impl ComponentSetMut<ColliderChanges>,
+ colliders: &mut ColliderSet,
modified_colliders: &mut Vec<ColliderHandle>,
) {
for handle in modified_colliders.drain(..) {
@@ -129,7 +110,7 @@ impl CollisionPipeline {
narrow_phase: &mut NarrowPhase,
bodies: &mut RigidBodySet,
colliders: &mut ColliderSet,
- hooks: &dyn PhysicsHooks<RigidBodySet, ColliderSet>,
+ hooks: &dyn PhysicsHooks,
events: &dyn EventHandler,
) {
let mut modified_bodies = bodies.take_modified();
@@ -151,38 +132,19 @@ impl CollisionPipeline {
}
/// Executes one step of the collision detection.
- pub fn step_generic<Bodies, Colliders>(
+ pub fn step_generic(
&mut self,
prediction_distance: Real,
broad_phase: &mut BroadPhase,
narrow_phase: &mut NarrowPhase,
- bodies: &mut Bodies,
- colliders: &mut Colliders,
+ bodies: &mut RigidBodySet,
+ colliders: &mut ColliderSet,
modified_bodies: &mut Vec<RigidBodyHandle>,
modified_colliders: &mut Vec<ColliderHandle>,
removed_colliders: &mut Vec<ColliderHandle>,
- hooks: &dyn PhysicsHooks<Bodies, Colliders>,
+ hooks: &dyn PhysicsHooks,
events: &dyn EventHandler,
- ) where
- Bodies: ComponentSetMut<RigidBodyPosition>
- + ComponentSetMut<RigidBodyVelocity>
- + ComponentSetMut<RigidBodyIds>
- + ComponentSetMut<RigidBodyActivation>
- + ComponentSetMut<RigidBodyChanges>
- + ComponentSetMut<RigidBodyMassProps>
- + ComponentSet<RigidBodyColliders>
- + ComponentSet<RigidBodyDominance>
- + ComponentSet<RigidBodyType>,
- Colliders: ComponentSetMut<ColliderBroadPhaseData>
- + ComponentSetMut<ColliderChanges>
- + ComponentSetMut<ColliderPosition>
- + ComponentSet<ColliderShape>
- + ComponentSetOption<ColliderParent>
- + ComponentSet<ColliderType>
- + ComponentSet<ColliderMaterial>
- + ComponentSet<ColliderFlags>
- + ComponentSet<ColliderMassProps>,
- {
+ ) {
super::user_changes::handle_user_changes_to_colliders(
bodies,
colliders,