From 4c95ddf296d66d2a0316631bd521e4eeab98c87a Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Sun, 23 Feb 2025 08:17:30 -0600 Subject: [PATCH] Attempt to work around crash when creating direction. --- src/visibility.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/visibility.rs b/src/visibility.rs index 2e26ca1..097f4c2 100644 --- a/src/visibility.rs +++ b/src/visibility.rs @@ -80,13 +80,14 @@ impl Viewshed { // println!("Checking {coord:?}"); if let Some((_, entities)) = opacity_map.get(&coord) { for e in entities { - if entities.len() == 1 || sensors.contains(*e) { + let coord = Vec2::new(coord.x as f32 + 0.5, coord.y as f32 + 0.5); + let dir = (coord - *start).normalize_or_zero(); + if dir == Vec2::ZERO || entities.len() == 1 || sensors.contains(*e) { // println!("Spotted {e:?}"); new_visible_entities.insert(*e); } else { let should_push = std::cell::RefCell::new(true); - let coord = Vec2::new(coord.x as f32 + 0.5, coord.y as f32 + 0.5); - let dir = Dir2::new_unchecked((coord - *start).normalize_or_zero()); + let dir = Dir2::new_unchecked(dir); // println!("Casting from {coord} to {dir:?}"); spatial_query.cast_ray_predicate( *start,