Fix visibility logging.
This commit is contained in:
parent
98bca77f66
commit
822e60e722
|
@ -241,9 +241,8 @@ fn log_visible(
|
|||
query_pipeline: Res<QueryPipeline>,
|
||||
collider_query: QueryPipelineColliderComponentsQuery,
|
||||
mut log: Query<&mut Log>,
|
||||
viewers: Query<(&Viewshed, &Coordinates, &Transform), With<Player>>,
|
||||
viewers: Query<(Entity, &Viewshed, &Coordinates, &Transform), With<Player>>,
|
||||
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
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue
Block a user