Skip to content

Commit 67c4eac

Browse files
committed
Use less hacky method of determining if collider is a road segment
1 parent 84ad95e commit 67c4eac

1 file changed

Lines changed: 17 additions & 14 deletions

File tree

src/net_ripping.rs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -72,23 +72,26 @@ fn net_ripping_mouse_movement_system(
7272

7373
ripping_state.reset();
7474

75-
// Find collision on the top-most (lowest layer value) layer
75+
// Find the top-most (lowest layer value) collision with a road segment
7676
let Some((entity, _layer)) = q_colliders
7777
.iter()
78-
.filter_map(|(child_of, collider, layer)| match collider {
79-
Collider::Segment(segment) => {
80-
match point_segment_collision(mouse_snapped.0, segment.0, segment.1) {
81-
PointCollision::None => None,
82-
_ => {
83-
if layer.0 == 0 {
84-
None
85-
} else {
86-
Some((child_of.parent(), layer.0))
87-
}
88-
}
89-
}
78+
.filter_map(|(child_of, collider, layer)| {
79+
let Collider::Segment(segment_points) = collider else {
80+
return None;
81+
};
82+
83+
if q_road_segments.get(child_of.parent()).is_err() {
84+
return None;
9085
}
91-
_ => None,
86+
87+
if matches!(
88+
point_segment_collision(mouse_snapped.0, segment_points.0, segment_points.1),
89+
PointCollision::None
90+
) {
91+
return None;
92+
};
93+
94+
Some((child_of.parent(), layer.0))
9295
})
9396
.min_by_key(|(_, layer)| *layer)
9497
else {

0 commit comments

Comments
 (0)