Start fixing free space example

This commit is contained in:
hodasemi 2025-04-06 09:36:21 +02:00
parent 885e8126ac
commit 27403f16ba
4 changed files with 18 additions and 23 deletions

View file

@ -170,7 +170,7 @@ impl AssetLoader for EntityManager {
}
entity_object.insert_component(Audio::new(
assets.world().resources.get_mut::<Context>(),
assets.world().resources.get_mut()?,
entity_parser.sound_map,
)?);
}

View file

@ -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::<Scene>();
let camera_control = resources.get::<FreeCameraControl>();
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<Option<EngineEvent<'a>>> {
match event {
EngineEvent::MouseButtonDown(MouseButton::Middle) => {
let camera_control = world.resources.get_mut::<FreeCameraControl>();
let camera_control: &mut FreeCameraControl = world.resources.get_mut()?;
camera_control.mouse_down();
}
EngineEvent::MouseButtonUp(MouseButton::Middle) => {
let camera_control = world.resources.get_mut::<FreeCameraControl>();
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::<Scene>();
let camera_control = resources.get::<FreeCameraControl>();
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::<FreeCameraControl>();
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::<FreeCameraControl>();
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::<Scene>()
.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::<Scene>();
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::<Scene>();
let scene: &mut Scene = world.resources.get_mut()?;
let view = scene.view_mut();
view.camera_mut()

View file

@ -5,7 +5,7 @@ use engine::prelude::*;
use crate::game::Game;
#[derive(Default)]
#[derive(Default, Resource)]
pub enum GameState {
#[default]
Startup,

View file

@ -41,7 +41,8 @@ fn main() -> Result<()> {
)?;
if FREE_CAMERA_CONTROL {
let view = world_builder.resources.get_mut::<Scene>().view_mut();
let scene:&mut Scene = world_builder.resources.get_mut::<Scene>()?;
let view = .view_mut();
let camera_control = FreeCameraControl::new(view)?;
world_builder.resources.insert(camera_control);
}