diff options
Diffstat (limited to 'engine/src/lib.rs')
-rw-r--r-- | engine/src/lib.rs | 47 |
1 files changed, 18 insertions, 29 deletions
diff --git a/engine/src/lib.rs b/engine/src/lib.rs index abf26f5..a9a5a97 100644 --- a/engine/src/lib.rs +++ b/engine/src/lib.rs @@ -1,44 +1,32 @@ #![deny(clippy::all, clippy::pedantic)] #![allow(clippy::needless_pass_by_value)] -use ecs::component::Sequence as ComponentSequence; -use ecs::event::component::TypeTransformComponentsToAddedEvents; -use ecs::event::{Event, Sequence as EventSequence}; +use ecs::component::{Component, Sequence as ComponentSequence}; use ecs::extension::Extension; +use ecs::phase::PRE_UPDATE as PRE_UPDATE_PHASE; use ecs::sole::Sole; use ecs::system::{Into, System}; -use ecs::tuple::Reduce as TupleReduce; use ecs::uid::Uid; use ecs::{SoleAlreadyExistsError, World}; use crate::delta_time::{update as update_delta_time, DeltaTime, LastUpdate}; -use crate::event::{ - Conclude as ConcludeEvent, - PostPresent as PostPresentEvent, - PreUpdate as PreUpdateEvent, - Present as PresentEvent, - Update as UpdateEvent, -}; mod opengl; -mod shader_preprocessor; mod util; pub mod camera; +pub mod collision; pub mod data_types; pub mod delta_time; pub mod draw_flags; -pub mod event; pub mod file_format; pub mod input; pub mod lighting; pub mod material; pub mod math; pub mod mesh; -pub mod performance; pub mod projection; pub mod renderer; -pub mod shader; pub mod texture; pub mod transform; pub mod vertex; @@ -49,14 +37,6 @@ pub extern crate ecs; pub(crate) use crate::data_types::matrix; pub use crate::data_types::{color, vector}; -type EventOrder = ( - PreUpdateEvent, - UpdateEvent, - PresentEvent, - PostPresentEvent, - ConcludeEvent, -); - #[derive(Debug)] pub struct Engine { @@ -74,7 +54,7 @@ impl Engine world.add_sole(DeltaTime::default()).ok(); world.register_system( - PreUpdateEvent, + *PRE_UPDATE_PHASE, update_delta_time .into_system() .initialize((LastUpdate::default(),)), @@ -85,19 +65,28 @@ impl Engine pub fn spawn<Comps>(&mut self, components: Comps) -> Uid where - Comps: ComponentSequence + TupleReduce<TypeTransformComponentsToAddedEvents>, - Comps::Out: EventSequence, + Comps: ComponentSequence, { self.world.create_entity(components) } pub fn register_system<'this, SystemImpl>( &'this mut self, - event: impl Event, + phase_euid: Uid, system: impl System<'this, SystemImpl>, ) { - self.world.register_system(event, system); + self.world.register_system(phase_euid, system); + } + + pub fn register_observer_system<'this, SystemImpl, Event>( + &'this mut self, + system: impl System<'this, SystemImpl>, + event: Event, + ) where + Event: Component, + { + self.world.register_observer_system(system, event); } /// Adds a globally shared singleton value. @@ -117,7 +106,7 @@ impl Engine /// Runs the event loop. pub fn start(&self) { - self.world.event_loop::<EventOrder>(); + self.world.start_loop(); } } |