From 27403f16ba664ecf85852e740254b7914a0c1aed Mon Sep 17 00:00:00 2001 From: hodasemi Date: Sun, 6 Apr 2025 09:36:21 +0200 Subject: [PATCH] Start fixing free space example --- entity_manager/src/entity_manager.rs | 2 +- examples/free_space/src/game.rs | 34 +++++++++++---------------- examples/free_space/src/game_state.rs | 2 +- examples/free_space/src/main.rs | 3 ++- 4 files changed, 18 insertions(+), 23 deletions(-) diff --git a/entity_manager/src/entity_manager.rs b/entity_manager/src/entity_manager.rs index 7dab4fa..4ff0d02 100644 --- a/entity_manager/src/entity_manager.rs +++ b/entity_manager/src/entity_manager.rs @@ -170,7 +170,7 @@ impl AssetLoader for EntityManager { } entity_object.insert_component(Audio::new( - assets.world().resources.get_mut::(), + assets.world().resources.get_mut()?, entity_parser.sound_map, )?); } diff --git a/examples/free_space/src/game.rs b/examples/free_space/src/game.rs index 6c9490f..a3eef2d 100644 --- a/examples/free_space/src/game.rs +++ b/examples/free_space/src/game.rs @@ -10,7 +10,7 @@ use engine::prelude::{ use crate::{FREE_CAMERA_CONTROL, celestial_object::*}; -#[derive(Clone, Copy, Debug)] +#[derive(Clone, Copy, Debug, Resource)] struct PlayerEntity(Entity); #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] @@ -37,7 +37,7 @@ enum Control { SecondaryWeapon, } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Resource)] struct InputSettings { mappings: HashMap<(String, u32, Input), (Control, bool)>, } @@ -112,9 +112,8 @@ impl Game { pub fn update(&mut self, world: &mut World) -> Result<()> { if FREE_CAMERA_CONTROL { let now = world.now(); - let mut resources = world.resources.multi_mut(); - let scene = resources.get::(); - let camera_control = resources.get::(); + let (scene, camera_control): (&mut Scene, &mut FreeCameraControl) = + world.resources.get_mut()?; camera_control.update(now, scene.view_mut())?; } @@ -157,24 +156,23 @@ impl Game { ) -> Result>> { match event { EngineEvent::MouseButtonDown(MouseButton::Middle) => { - let camera_control = world.resources.get_mut::(); + let camera_control: &mut FreeCameraControl = world.resources.get_mut()?; camera_control.mouse_down(); } EngineEvent::MouseButtonUp(MouseButton::Middle) => { - let camera_control = world.resources.get_mut::(); + let camera_control: &mut FreeCameraControl = world.resources.get_mut()?; camera_control.mouse_release(); } EngineEvent::MouseMotion(x, y) => { - let mut resources = world.resources.multi_mut(); - let scene = resources.get::(); - let camera_control = resources.get::(); + let (scene, camera_control): (&mut Scene, &mut FreeCameraControl) = + world.resources.get_mut()?; camera_control.mouse_move(x, y, scene.view_mut())?; return Ok(Some(event)); } EngineEvent::KeyDown(key) => { - let camera_control = world.resources.get_mut::(); + let camera_control: &mut FreeCameraControl = world.resources.get_mut()?; match key { Keycode::W => camera_control.forward_back(1.0), @@ -188,7 +186,7 @@ impl Game { } } EngineEvent::KeyUp(key) => { - let camera_control = world.resources.get_mut::(); + let camera_control: &mut FreeCameraControl = world.resources.get_mut()?; match key { Keycode::W => camera_control.forward_back(-1.0), @@ -282,12 +280,8 @@ impl Game { } pub fn setup_scene(world: &mut World) -> Result<()> { - world - .resources - .get_mut::() - .view_mut() - .camera_mut() - .look_at(false); + let scene: &mut Scene = world.resources.get_mut()?; + scene.view_mut().camera_mut().look_at(false); let mut fighter = AssetHandler::create(world).create_entity("fighter_edited")?; fighter.insert_component(FreeSpaceControl::new( @@ -317,7 +311,7 @@ impl Game { light.set_power(50_000_000_000.0)?; light.set_color(vec3(1.0, 1.0, 1.0))?; - let scene = world.resources.get_mut::(); + let scene: &mut Scene = world.resources.get_mut()?; scene.add_light(light)?; world.commit_entity_changes() @@ -341,7 +335,7 @@ impl Game { _entity: Entity, control: &mut FreeSpaceControl, ) -> Result<()> { - let scene = world.resources.get_mut::(); + let scene: &mut Scene = world.resources.get_mut()?; let view = scene.view_mut(); view.camera_mut() diff --git a/examples/free_space/src/game_state.rs b/examples/free_space/src/game_state.rs index 32f7de5..d234e96 100644 --- a/examples/free_space/src/game_state.rs +++ b/examples/free_space/src/game_state.rs @@ -5,7 +5,7 @@ use engine::prelude::*; use crate::game::Game; -#[derive(Default)] +#[derive(Default, Resource)] pub enum GameState { #[default] Startup, diff --git a/examples/free_space/src/main.rs b/examples/free_space/src/main.rs index a8c6e88..f0d1c64 100644 --- a/examples/free_space/src/main.rs +++ b/examples/free_space/src/main.rs @@ -41,7 +41,8 @@ fn main() -> Result<()> { )?; if FREE_CAMERA_CONTROL { - let view = world_builder.resources.get_mut::().view_mut(); + let scene:&mut Scene = world_builder.resources.get_mut::()?; + let view = .view_mut(); let camera_control = FreeCameraControl::new(view)?; world_builder.resources.insert(camera_control); }