summaryrefslogtreecommitdiff
path: root/ecs/src/lib.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2024-04-13 17:38:45 +0200
committerHampusM <hampus@hampusmat.com>2024-04-13 17:38:45 +0200
commitef7b76ff39d501028852835649f618fcbe17a003 (patch)
tree00cf4966c1bcfa0812f436a793a1711867869601 /ecs/src/lib.rs
parentf2120591b0051d4239de73960709248456e884e7 (diff)
feat(ecs): add extensions
Diffstat (limited to 'ecs/src/lib.rs')
-rw-r--r--ecs/src/lib.rs13
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.
///