summaryrefslogtreecommitdiff
path: root/engine/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src/lib.rs')
-rw-r--r--engine/src/lib.rs32
1 files changed, 25 insertions, 7 deletions
diff --git a/engine/src/lib.rs b/engine/src/lib.rs
index c537e06..75bc921 100644
--- a/engine/src/lib.rs
+++ b/engine/src/lib.rs
@@ -3,40 +3,48 @@
use ecs::component::Sequence as ComponentSequence;
use ecs::extension::Extension;
-use ecs::pair::Pair;
use ecs::phase::PRE_UPDATE as PRE_UPDATE_PHASE;
use ecs::sole::Sole;
+use ecs::system::initializable::Initializable;
+use ecs::system::observer::Observer;
use ecs::system::{Into, System};
use ecs::uid::Uid;
use ecs::{SoleAlreadyExistsError, World};
-use crate::delta_time::{update as update_delta_time, DeltaTime, LastUpdate};
+use crate::asset::{Assets, Extension as AssetExtension};
+use crate::delta_time::{DeltaTime, LastUpdate, update as update_delta_time};
mod opengl;
mod util;
+mod work_queue;
+pub mod asset;
pub mod camera;
pub mod collision;
pub mod data_types;
pub mod delta_time;
pub mod draw_flags;
pub mod file_format;
+pub mod image;
pub mod input;
pub mod lighting;
pub mod material;
pub mod math;
pub mod mesh;
+pub mod model;
pub mod projection;
pub mod renderer;
pub mod texture;
pub mod transform;
-pub mod window;
+pub mod windowing;
pub extern crate ecs;
pub(crate) use crate::data_types::matrix;
pub use crate::data_types::{color, vector};
+const INITIAL_ASSET_CAPACITY: usize = 128;
+
#[derive(Debug)]
pub struct Engine
{
@@ -49,6 +57,9 @@ impl Engine
#[must_use]
pub fn new() -> Self
{
+ #[cfg(windows)]
+ nu_ansi_term::enable_ansi_support().unwrap();
+
let mut world = World::new();
world.add_sole(DeltaTime::default()).ok();
@@ -60,6 +71,14 @@ impl Engine
.initialize((LastUpdate::default(),)),
);
+ let mut assets = Assets::with_capacity(INITIAL_ASSET_CAPACITY);
+
+ crate::model::asset::add_importers(&mut assets);
+ crate::material::asset::add_importers(&mut assets);
+ crate::image::set_asset_importers(&mut assets);
+
+ world.add_extension(AssetExtension { assets });
+
Self { world }
}
@@ -79,13 +98,12 @@ impl Engine
self.world.register_system(phase_euid, system);
}
- pub fn register_observer_system<'this, SystemImpl>(
+ pub fn register_observer<'this, SystemImpl>(
&'this mut self,
- system: impl System<'this, SystemImpl>,
- event: Pair<Uid, Uid>,
+ observer: impl Observer<'this, SystemImpl>,
)
{
- self.world.register_observer_system(system, event);
+ self.world.register_observer(observer);
}
/// Adds a globally shared singleton value.