use crate::{declare_entity, Component, World}; #[derive(Debug, Default, Clone, Copy, Component)] pub struct Phase; declare_entity! { /// Initialization phase that only occurs the first tick, before [`START`]. /// Should not be used for game logic pub INIT: (Phase,); /// Phase that only occurs the first tick, after [`INIT`]. pub START: (Phase,); /// Phase that occurs every tick, before [`UPDATE`]. pub PRE_UPDATE: (Phase,); /// Phase that occurs every tick, after [`PRE_UPDATE`]. pub UPDATE: (Phase,); /// Phase that occurs every tick, after [`UPDATE`]. pub POST_UPDATE: (Phase,); } pub(crate) fn spawn_standard_phases(world: &mut World) { world.spawn_declared_entity(&INIT); world.spawn_declared_entity(&START); world.spawn_declared_entity(&PRE_UPDATE); world.spawn_declared_entity(&UPDATE); world.spawn_declared_entity(&POST_UPDATE); } #[derive(Debug, Component)] pub(crate) struct HasSystem;