diff options
author | HampusM <hampus@hampusmat.com> | 2024-04-13 17:38:45 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2024-04-13 17:38:45 +0200 |
commit | ef7b76ff39d501028852835649f618fcbe17a003 (patch) | |
tree | 00cf4966c1bcfa0812f436a793a1711867869601 /ecs/src/lib.rs | |
parent | f2120591b0051d4239de73960709248456e884e7 (diff) |
feat(ecs): add extensions
Diffstat (limited to 'ecs/src/lib.rs')
-rw-r--r-- | ecs/src/lib.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/ecs/src/lib.rs b/ecs/src/lib.rs index 285f3b3..009ff21 100644 --- a/ecs/src/lib.rs +++ b/ecs/src/lib.rs @@ -12,6 +12,7 @@ use std::vec::Drain; use crate::actions::Action; use crate::component::{Component, Sequence as ComponentSequence}; use crate::event::{Event, Id as EventId, Ids, Sequence as EventSequence}; +use crate::extension::{Collector as ExtensionCollector, Extension}; use crate::lock::Lock; use crate::sole::Sole; use crate::system::{System, TypeErased as TypeErasedSystem}; @@ -20,6 +21,7 @@ use crate::type_name::TypeName; pub mod actions; pub mod component; pub mod event; +pub mod extension; pub mod lock; pub mod query; pub mod sole; @@ -120,6 +122,17 @@ impl World drop(event); } + /// Adds a extensions. + /// + /// # Panics + /// Will panic if mutable internal lock cannot be acquired. + pub fn add_extension(&mut self, extension: impl Extension) + { + let extension_collector = ExtensionCollector::new(self); + + extension.collect(extension_collector); + } + /// Emits a event, running all systems listening to the event for each compatible /// entity. /// |