From 6d6ff3ae23358a4a64b5659854bb88ae54638d8a Mon Sep 17 00:00:00 2001 From: Nolan Darilek Date: Thu, 24 Feb 2022 11:11:11 -0600 Subject: [PATCH] Since visibility requires physics, use `RigidBodyPositionComponent` rather than `Coordinates` for calculations. --- src/visibility.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/visibility.rs b/src/visibility.rs index 12d3901..3d0b0b9 100644 --- a/src/visibility.rs +++ b/src/visibility.rs @@ -238,7 +238,7 @@ where fn update_viewshed( config: Res, - coordinates: Query<(Entity, &Coordinates), Changed>, + positions: Query<(Entity, &RigidBodyPositionComponent), Changed>, visible: Query<&Visible>, mut viewers: Query<(Entity, &mut Viewshed, &mut VisibleEntities, &Coordinates)>, map: Query<&Map>, @@ -250,10 +250,14 @@ fn update_viewshed( return; } let mut to_update = HashSet::new(); - for (entity, coordinates) in coordinates.iter() { + for (entity, position) in positions.iter() { if to_update.contains(&entity) { continue; } + let coordinates = ( + position.position.translation.x, + position.position.translation.y, + ); if viewers.get_mut(entity).is_ok() { to_update.insert(entity); } @@ -397,7 +401,7 @@ impl Plugin for VisibilityPlugin { fn build(&self, app: &mut App) { app.add_event::() .add_system(add_visibility_indices) - .add_system(update_viewshed) + .add_system_to_stage(CoreStage::PostUpdate, update_viewshed) .add_system_to_stage(CoreStage::PostUpdate, viewshed_removed) .add_system_to_stage(CoreStage::PostUpdate, remove_visible) .add_system_to_stage(CoreStage::PostUpdate, update_revealed_tiles)