Fix visibility logging.
This commit is contained in:
parent
98bca77f66
commit
822e60e722
|
@ -241,9 +241,8 @@ fn log_visible(
|
||||||
query_pipeline: Res<QueryPipeline>,
|
query_pipeline: Res<QueryPipeline>,
|
||||||
collider_query: QueryPipelineColliderComponentsQuery,
|
collider_query: QueryPipelineColliderComponentsQuery,
|
||||||
mut log: Query<&mut Log>,
|
mut log: Query<&mut Log>,
|
||||||
viewers: Query<(&Viewshed, &Coordinates, &Transform), With<Player>>,
|
viewers: Query<(Entity, &Viewshed, &Coordinates, &Transform), With<Player>>,
|
||||||
names: Query<&Name>,
|
names: Query<&Name>,
|
||||||
players: Query<&Player>,
|
|
||||||
dont_log_when_visible: Query<&DontLogWhenVisible>,
|
dont_log_when_visible: Query<&DontLogWhenVisible>,
|
||||||
) {
|
) {
|
||||||
for timer in recently_lost.values_mut() {
|
for timer in recently_lost.values_mut() {
|
||||||
|
@ -257,9 +256,9 @@ fn log_visible(
|
||||||
}
|
}
|
||||||
let mut new_seen = HashSet::new();
|
let mut new_seen = HashSet::new();
|
||||||
if let Ok(mut log) = log.single_mut() {
|
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 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 {
|
for viewed_coordinates in &viewshed.visible {
|
||||||
let shape_pos = (
|
let shape_pos = (
|
||||||
Vec2::new(viewed_coordinates.x() + 0.5, viewed_coordinates.y() + 0.5),
|
Vec2::new(viewed_coordinates.x() + 0.5, viewed_coordinates.y() + 0.5),
|
||||||
|
@ -271,26 +270,27 @@ fn log_visible(
|
||||||
&shape_pos,
|
&shape_pos,
|
||||||
&shape,
|
&shape,
|
||||||
InteractionGroups::all(),
|
InteractionGroups::all(),
|
||||||
None,
|
Some(&|v| v.entity() != viewer_entity),
|
||||||
|handle| {
|
|handle| {
|
||||||
let entity = handle.entity();
|
let entity = handle.entity();
|
||||||
if recently_lost.contains_key(&entity) {
|
if recently_lost.contains_key(&entity) {
|
||||||
|
new_seen.insert(entity);
|
||||||
|
recently_lost.remove(&entity);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if let Ok(name) = names.get(entity) {
|
if let Ok(name) = names.get(entity) {
|
||||||
if players.get(entity).is_err() {
|
if !seen.contains(&entity)
|
||||||
if !seen.contains(&entity)
|
&& !new_seen.contains(&entity)
|
||||||
&& dont_log_when_visible.get(entity).is_err()
|
&& dont_log_when_visible.get(entity).is_err()
|
||||||
{
|
{
|
||||||
let name = name.to_string();
|
let name = name.to_string();
|
||||||
let forward = transform.local_x();
|
let forward = transform.local_x();
|
||||||
let yaw = Angle::Radians(forward.y.atan2(forward.x));
|
let yaw = Angle::Radians(forward.y.atan2(forward.x));
|
||||||
let location = coordinates
|
let location = coordinates
|
||||||
.direction_and_distance(viewed_coordinates, Some(yaw));
|
.direction_and_distance(viewed_coordinates, Some(yaw));
|
||||||
log.push(format!("{}: {}", name, location));
|
log.push(format!("{}: {}", name, location));
|
||||||
}
|
|
||||||
new_seen.insert(entity);
|
|
||||||
}
|
}
|
||||||
|
new_seen.insert(entity);
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue
Block a user