diff options
| -rw-r--r-- | src/main.rs | 44 | 
1 files changed, 29 insertions, 15 deletions
| diff --git a/src/main.rs b/src/main.rs index d5154ae..4ede773 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,10 +9,13 @@ use engine::camera::fly::{  };  use engine::camera::{Active as ActiveCamera, Camera};  use engine::color::Color; -use engine::data_types::dimens::{Dimens, Dimens3}; +use engine::data_types::dimens::Dimens3;  use engine::ecs::actions::Actions; +use engine::ecs::event::component::Added; +use engine::ecs::pair::Pair;  use engine::ecs::phase::START as START_PHASE;  use engine::ecs::sole::Single; +use engine::ecs::system::observer::Observe;  use engine::input::Extension as InputExtension;  use engine::lighting::{AttenuationParams, GlobalLight, PointLight};  use engine::material::{Flags as MaterialFlags, Material}; @@ -22,12 +25,12 @@ use engine::mesh::cube::{  };  use engine::model::{Data as ModelData, Model};  use engine::renderer::opengl::Extension as OpenglRendererExtension; +use engine::renderer::GraphicsProperties;  use engine::transform::WorldPosition;  use engine::vector::Vec3; -use engine::window::{ -    Builder as WindowBuilder, -    CursorMode, -    Extension as WindowExtension, +use engine::windowing::window::{ +    CreationAttributes as WindowCreationAttributes, +    CursorGrabMode as WindowCursorGrabMode,      Window,  };  use engine::Engine; @@ -36,8 +39,6 @@ use tracing_subscriber::layer::SubscriberExt;  use tracing_subscriber::util::SubscriberInitExt;  use tracing_subscriber::EnvFilter; -const WINDOW_SIZE: Dimens<u32> = Dimens { width: 1920, height: 1080 }; -  const YELLOW: Color<f32> = Color {      red: 0.988235294118,      green: 0.941176470588, @@ -72,13 +73,11 @@ fn main() -> Result<(), Box<dyn Error>>      engine.register_system(*START_PHASE, init); -    engine.add_extension(OpenglRendererExtension::default()); +    engine.register_observer(configure_window_on_added); + +    engine.add_extension(engine::windowing::Extension::default()); -    engine.add_extension( -        WindowExtension::new(WindowBuilder::default().multisampling_sample_count(8)) -            .window_title("Game") -            .window_size(WINDOW_SIZE), -    ); +    engine.add_extension(OpenglRendererExtension::default());      engine.add_extension(FlyCameraExtension(FlyCameraOptions {          mouse_sensitivity: 0.2, @@ -86,15 +85,30 @@ fn main() -> Result<(), Box<dyn Error>>      engine.add_extension(InputExtension::default()); +    engine.spawn(( +        WindowCreationAttributes::default().with_title("Game"), +        GraphicsProperties::builder().debug(true).build(), +    )); +      engine.start();      Ok(())  } -fn init(window: Single<Window>, mut assets: Single<Assets>, mut actions: Actions) +fn configure_window_on_added(observe: Observe<Pair<Added, Window>>)  { -    window.set_cursor_mode(CursorMode::Disabled).unwrap(); +    for evt_match in &observe { +        let mut window = evt_match.get_added_comp_mut(); + +        window.cursor_visible = false; +        window.cursor_grab_mode = WindowCursorGrabMode::Locked; +        window.set_changed(); +    } +} + +fn init(mut assets: Single<Assets>, mut actions: Actions) +{      actions.spawn((          PointLight::builder()              .diffuse(YELLOW) | 
