diff options
author | HampusM <hampus@hampusmat.com> | 2024-08-07 20:03:49 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2024-08-07 20:03:49 +0200 |
commit | 3ea0d8cc96a54349aa064bb2fbf349b129e51c94 (patch) | |
tree | 15803d1a0cb964f1e81830be0266b65b98c8f05d | |
parent | c2787b021d93c243978250d705a9052392f1e9a0 (diff) |
feat(ecs): add start event
-rw-r--r-- | ecs/src/event.rs | 2 | ||||
-rw-r--r-- | ecs/src/event/start.rs | 7 | ||||
-rw-r--r-- | ecs/src/lib.rs | 6 |
3 files changed, 14 insertions, 1 deletions
diff --git a/ecs/src/event.rs b/ecs/src/event.rs index 6a4c3a8..93d4545 100644 --- a/ecs/src/event.rs +++ b/ecs/src/event.rs @@ -6,6 +6,8 @@ use seq_macro::seq; pub trait Event: Debug + 'static {} +pub mod start; + /// The ID of a [`Event`]. #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct Id diff --git a/ecs/src/event/start.rs b/ecs/src/event/start.rs new file mode 100644 index 0000000..248dd50 --- /dev/null +++ b/ecs/src/event/start.rs @@ -0,0 +1,7 @@ +use crate::event::Event; + +/// Start event. +#[derive(Debug, Clone, Copy)] +pub struct Start; + +impl Event for Start {} diff --git a/ecs/src/lib.rs b/ecs/src/lib.rs index cf2f198..0da8b71 100644 --- a/ecs/src/lib.rs +++ b/ecs/src/lib.rs @@ -13,6 +13,7 @@ use crate::actions::Action; use crate::component::storage::Storage as ComponentStorage; use crate::component::{Component, Id as ComponentId, Sequence as ComponentSequence}; use crate::entity::Uid as EntityUid; +use crate::event::start::Start as StartEvent; use crate::event::{Event, Id as EventId, Ids, Sequence as EventSequence}; use crate::extension::{Collector as ExtensionCollector, Extension}; use crate::lock::Lock; @@ -195,7 +196,8 @@ impl World .make_archetype_lookup_entries(); } - /// A event loop which runs until a stop is issued with [`Flags::stop`]. + /// A event loop which runs until a stop is issued with [`Flags::stop`]. Before the + /// loop begins, [`StartEvent`] is emitted. /// /// # Panics /// Will panic if a internal lock cannot be acquired. @@ -203,6 +205,8 @@ impl World { self.prepare(); + self.emit(StartEvent); + let event_seq = EventSeq::ids(); loop { |