summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-02-03 20:29:48 +0100
committertroido <troido@protonmail.com>2020-02-03 20:29:48 +0100
commitdc6ca50ce53d1a9a9ad475e4d82fb3b1fcdfae58 (patch)
treef4207c094fdb40595b1aa64229e7f8f937eb3f68 /src
parent53f358f73c37e86f4db9e7bd7af309697dc7237e (diff)
also send a change when a visibility has changes
Diffstat (limited to 'src')
-rw-r--r--src/systems/view.rs12
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()
+ );
}
}