aboutsummaryrefslogtreecommitdiff
path: root/src/geometry/narrow_phase.rs
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2020-10-20 11:55:33 +0200
committerCrozet Sébastien <developer@crozet.re>2020-10-20 11:56:09 +0200
commit865ce8a8e5301b23ca474adaaffe8b43e725803e (patch)
tree67b57d0c63d11a6d5e4a23c6f1242f72efc721b9 /src/geometry/narrow_phase.rs
parent947c4813c9666fd8215743de298fe17780fa3ef2 (diff)
downloadrapier-865ce8a8e5301b23ca474adaaffe8b43e725803e.tar.gz
rapier-865ce8a8e5301b23ca474adaaffe8b43e725803e.tar.bz2
rapier-865ce8a8e5301b23ca474adaaffe8b43e725803e.zip
Collider shape: use a trait-object instead of an enum.
Diffstat (limited to 'src/geometry/narrow_phase.rs')
-rw-r--r--src/geometry/narrow_phase.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/geometry/narrow_phase.rs b/src/geometry/narrow_phase.rs
index ebe0a79..e95709c 100644
--- a/src/geometry/narrow_phase.rs
+++ b/src/geometry/narrow_phase.rs
@@ -197,7 +197,8 @@ impl NarrowPhase {
if self.proximity_graph.graph.find_edge(gid1, gid2).is_none() {
let dispatcher = DefaultProximityDispatcher;
- let generator = dispatcher.dispatch(co1.shape(), co2.shape());
+ let generator = dispatcher
+ .dispatch(co1.shape().shape_type(), co2.shape().shape_type());
let interaction =
ProximityPair::new(*pair, generator.0, generator.1);
let _ = self.proximity_graph.add_edge(
@@ -226,7 +227,8 @@ impl NarrowPhase {
if self.contact_graph.graph.find_edge(gid1, gid2).is_none() {
let dispatcher = DefaultContactDispatcher;
- let generator = dispatcher.dispatch(co1.shape(), co2.shape());
+ let generator = dispatcher
+ .dispatch(co1.shape().shape_type(), co2.shape().shape_type());
let interaction = ContactPair::new(*pair, generator.0, generator.1);
let _ = self.contact_graph.add_edge(
co1.contact_graph_index,
@@ -308,7 +310,8 @@ impl NarrowPhase {
if pair.detector.is_none() {
// We need a redispatch for this detector.
// This can happen, e.g., after restoring a snapshot of the narrow-phase.
- let (detector, workspace) = dispatcher.dispatch(co1.shape(), co2.shape());
+ let (detector, workspace) =
+ dispatcher.dispatch(co1.shape().shape_type(), co2.shape().shape_type());
pair.detector = Some(detector);
pair.detector_workspace = workspace;
}
@@ -418,7 +421,8 @@ impl NarrowPhase {
if pair.generator.is_none() {
// We need a redispatch for this generator.
// This can happen, e.g., after restoring a snapshot of the narrow-phase.
- let (generator, workspace) = dispatcher.dispatch(co1.shape(), co2.shape());
+ let (generator, workspace) =
+ dispatcher.dispatch(co1.shape().shape_type(), co2.shape().shape_type());
pair.generator = Some(generator);
pair.generator_workspace = workspace;
}