diff options
author | HampusM <hampus@hampusmat.com> | 2024-04-06 15:35:51 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2024-04-06 16:09:25 +0200 |
commit | 6038a5b701ee9ea3bd3b5da50d7d06930cd9a270 (patch) | |
tree | 4b00618fd6f8290006dcedb92f15bde20cba93ce /ecs/src/flags.rs | |
parent | 97f973d685baf389dcde08044dd3dfb7ba556050 (diff) |
refactor(ecs): make stopping into a action
Diffstat (limited to 'ecs/src/flags.rs')
-rw-r--r-- | ecs/src/flags.rs | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/ecs/src/flags.rs b/ecs/src/flags.rs deleted file mode 100644 index ad10a0f..0000000 --- a/ecs/src/flags.rs +++ /dev/null @@ -1,66 +0,0 @@ -use std::any::Any; - -use crate::lock::WriteGuard; -use crate::system::{ - NoInitParamFlag as NoInitSystemParamFlag, - Param as SystemParam, - System, -}; -use crate::tuple::FilterExclude as TupleFilterExclude; -use crate::{WorldData, WorldFlags}; - -#[derive(Debug)] -pub struct Flags<'world> -{ - world_flags: WriteGuard<'world, WorldFlags>, -} - -impl<'world> Flags<'world> -{ - /// Calling this function makes the loop in [`Engine::event_loop`] stop at the next - /// opportune time. - pub fn stop(&mut self) - { - self.world_flags.stop = true; - } -} - -unsafe impl<'world> SystemParam<'world> for Flags<'world> -{ - type Flags = NoInitSystemParamFlag; - type Input = TupleFilterExclude; - - fn initialize<SystemImpl>( - _system: &mut impl System<'world, SystemImpl>, - _input: Self::Input, - ) - { - } - - fn new<SystemImpl>( - _system: &'world impl System<'world, SystemImpl>, - world_data: &'world WorldData, - ) -> Self - { - Self { - world_flags: world_data - .flags - .write_nonblock() - .expect("Failed to acquire read-write world flags lock"), - } - } - - fn is_compatible<Other: SystemParam<'world>>() -> bool - { - let other_comparable = Other::get_comparable(); - - other_comparable.downcast_ref::<Comparable>().is_none() - } - - fn get_comparable() -> Box<dyn Any> - { - Box::new(Comparable) - } -} - -struct Comparable; |