diff options
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. /// |