diff options
Diffstat (limited to 'ecs/src/lib.rs')
| -rw-r--r-- | ecs/src/lib.rs | 26 | 
1 files changed, 26 insertions, 0 deletions
| diff --git a/ecs/src/lib.rs b/ecs/src/lib.rs index 339a314..fc97d42 100644 --- a/ecs/src/lib.rs +++ b/ecs/src/lib.rs @@ -26,6 +26,7 @@ use crate::type_name::TypeName;  pub mod actions;  pub mod component;  pub mod event; +pub mod flags;  pub mod lock;  pub mod system;  pub mod tuple; @@ -166,6 +167,16 @@ impl World              }              self.perform_queued_actions(); + +            let flags = self +                .data +                .flags +                .read_nonblock() +                .expect("Failed to aquire lock to flags"); + +            if flags.stop { +                break; +            }          }      } @@ -187,11 +198,26 @@ impl World  }  #[derive(Debug, Default)] +struct WorldFlags +{ +    stop: bool, +} + +impl TypeName for WorldFlags +{ +    fn type_name(&self) -> &'static str +    { +        type_name::<Self>() +    } +} + +#[derive(Debug, Default)]  pub struct WorldData  {      events: HashMap<EventId, Vec<usize>>,      component_storage: Arc<Lock<ComponentStorage>>,      action_queue: Lock<ActionQueue>, +    flags: Lock<WorldFlags>,  }  #[derive(Debug, Default)] | 
