From 9e7967a26fd76a669a17b29b1224bb4b7bb0822b Mon Sep 17 00:00:00 2001 From: HampusM Date: Tue, 30 Jun 2026 20:41:32 +0200 Subject: refactor: make main fn shorter --- src/main.rs | 74 ++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/src/main.rs b/src/main.rs index dfcf22c..e5076d1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -61,40 +61,42 @@ fn main() -> Result<(), Box> ) .init(); - let mut engine = Engine::new(); - - engine.spawn(( - Camera::default(), - WorldPosition { - position: Vec3 { x: 0.0, y: 0.0, z: 3.0 }, - }, - ActiveCamera, - FlyCamera::default(), - )); - - engine.add_sole(GlobalLight::default())?; - - engine.register_system(*START_PHASE, init); + Engine::new() + .with_extension(engine::windowing::Extension::default()) + .with_extension( + RenderingExtension::builder() + .graphics_props( + GraphicsProperties::builder() + .debug(cfg!(debug_assertions)) + .build(), + ) + .build(), + ) + .with_extension(InputExtension::default()) + .with_extension(FlyCameraExtension(FlyCameraOptions { + mouse_sensitivity: 0.2, + })) + .with_extension(Application) + .start(); - engine.add_extension(engine::windowing::Extension::default()); + Ok(()) +} - engine.add_extension( - RenderingExtension::builder() - .graphics_props( - GraphicsProperties::builder() - .debug(cfg!(debug_assertions)) - .build(), - ) - .build(), - ); +struct Application; - engine.add_extension(FlyCameraExtension(FlyCameraOptions { - mouse_sensitivity: 0.2, - })); +impl engine::ecs::extension::Extension for Application +{ + fn collect(self, mut collector: engine::ecs::extension::Collector<'_>) + { + let _ = collector.add_sole(GlobalLight::default()); - engine.add_extension(InputExtension::default()); + collector.add_system(*START_PHASE, init); + } +} - engine.spawn(( +fn init(mut assets: Single, mut actions: Actions) +{ + actions.spawn(( WindowCreationAttributes::default() .with_title("Game") .with_cursor_visible(false) @@ -102,13 +104,15 @@ fn main() -> Result<(), Box> RenderingTargetWindow, )); - engine.start(); - - Ok(()) -} + actions.spawn(( + Camera::default(), + WorldPosition { + position: Vec3 { x: 0.0, y: 0.0, z: 3.0 }, + }, + ActiveCamera, + FlyCamera::default(), + )); -fn init(mut assets: Single, mut actions: Actions) -{ actions.spawn(( PointLight::builder() .diffuse(YELLOW) -- cgit v1.2.3-18-g5258