diff options
| author | troido <troido@protonmail.com> | 2020-02-03 20:29:48 +0100 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-02-03 20:29:48 +0100 |
| commit | dc6ca50ce53d1a9a9ad475e4d82fb3b1fcdfae58 (patch) | |
| tree | f4207c094fdb40595b1aa64229e7f8f937eb3f68 /src | |
| parent | 53f358f73c37e86f4db9e7bd7af309697dc7237e (diff) | |
also send a change when a visibility has changes
Diffstat (limited to 'src')
| -rw-r--r-- | src/systems/view.rs | 12 |
1 files changed, 9 insertions, 3 deletions
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<ReaderId<ComponentEvent>>, + pos_reader_id: Option<ReaderId<ComponentEvent>>, + vis_reader_id: Option<ReaderId<ComponentEvent>>, 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::<Position>::fetch(&world).register_reader() ); + self.vis_reader_id = Some( + WriteStorage::<Visible>::fetch(&world).register_reader() + ); } } |
