From dc6ca50ce53d1a9a9ad475e4d82fb3b1fcdfae58 Mon Sep 17 00:00:00 2001 From: troido Date: Mon, 3 Feb 2020 20:29:48 +0100 Subject: also send a change when a visibility has changes --- src/systems/view.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/systems/view.rs') diff --git a/src/systems/view.rs b/src/systems/view.rs index b854348..334d71c 100644 --- a/src/systems/view.rs +++ b/src/systems/view.rs @@ -23,7 +23,8 @@ use super::super::worldmessages::{WorldMessage, WorldUpdate, FieldMessage}; #[derive(Default)] pub struct View { - reader_id: Option>, + pos_reader_id: Option>, + vis_reader_id: Option>, dirty: BitSet } @@ -50,7 +51,9 @@ impl <'a> System<'a> for View { self.dirty.clear(); { - let events = positions.channel().read(self.reader_id.as_mut().unwrap()); + let pos_events = positions.channel().read(self.pos_reader_id.as_mut().unwrap()); + let vis_events = visible.channel().read(self.vis_reader_id.as_mut().unwrap()); + let events = vec![pos_events, vis_events].into_iter().flatten(); for event in events { match event { ComponentEvent::Modified(id) | ComponentEvent::Inserted(id) | ComponentEvent::Removed(id) => { @@ -91,9 +94,12 @@ impl <'a> System<'a> for View { fn setup(&mut self, world: &mut World) { Self::SystemData::setup(world); - self.reader_id = Some( + self.pos_reader_id = Some( WriteStorage::::fetch(&world).register_reader() ); + self.vis_reader_id = Some( + WriteStorage::::fetch(&world).register_reader() + ); } } -- cgit