From 822e60e722f2294499dd0bc650235c34d2aa48c7 Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Wed, 16 Jun 2021 13:09:21 -0500 Subject: [PATCH] Fix visibility logging. --- src/visibility.rs | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/visibility.rs b/src/visibility.rs index 7b72ecf..7cc878d 100644 --- a/src/visibility.rs +++ b/src/visibility.rs @@ -241,9 +241,8 @@ fn log_visible( query_pipeline: Res, collider_query: QueryPipelineColliderComponentsQuery, mut log: Query<&mut Log>, - viewers: Query<(&Viewshed, &Coordinates, &Transform), With>, + viewers: Query<(Entity, &Viewshed, &Coordinates, &Transform), With>, names: Query<&Name>, - players: Query<&Player>, dont_log_when_visible: Query<&DontLogWhenVisible>, ) { for timer in recently_lost.values_mut() { @@ -257,9 +256,9 @@ fn log_visible( } let mut new_seen = HashSet::new(); if let Ok(mut log) = log.single_mut() { - for (viewshed, coordinates, transform) in viewers.iter() { + for (viewer_entity, viewshed, coordinates, transform) in viewers.iter() { let collider_set = QueryPipelineColliderComponentsSet(&collider_query); - let shape = Cuboid::new(Vec2::new(0.5, 0.5).into()); + let shape = Cuboid::new(Vec2::new(0.49, 0.49).into()); for viewed_coordinates in &viewshed.visible { let shape_pos = ( Vec2::new(viewed_coordinates.x() + 0.5, viewed_coordinates.y() + 0.5), @@ -271,26 +270,27 @@ fn log_visible( &shape_pos, &shape, InteractionGroups::all(), - None, + Some(&|v| v.entity() != viewer_entity), |handle| { let entity = handle.entity(); if recently_lost.contains_key(&entity) { + new_seen.insert(entity); + recently_lost.remove(&entity); return true; } if let Ok(name) = names.get(entity) { - if players.get(entity).is_err() { - if !seen.contains(&entity) - && dont_log_when_visible.get(entity).is_err() - { - let name = name.to_string(); - let forward = transform.local_x(); - let yaw = Angle::Radians(forward.y.atan2(forward.x)); - let location = coordinates - .direction_and_distance(viewed_coordinates, Some(yaw)); - log.push(format!("{}: {}", name, location)); - } - new_seen.insert(entity); + if !seen.contains(&entity) + && !new_seen.contains(&entity) + && dont_log_when_visible.get(entity).is_err() + { + let name = name.to_string(); + let forward = transform.local_x(); + let yaw = Angle::Radians(forward.y.atan2(forward.x)); + let location = coordinates + .direction_and_distance(viewed_coordinates, Some(yaw)); + log.push(format!("{}: {}", name, location)); } + new_seen.insert(entity); } true },