Start fixing free space example
This commit is contained in:
parent
885e8126ac
commit
27403f16ba
4 changed files with 18 additions and 23 deletions
|
@ -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,
|
||||
)?);
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -5,7 +5,7 @@ use engine::prelude::*;
|
|||
|
||||
use crate::game::Game;
|
||||
|
||||
#[derive(Default)]
|
||||
#[derive(Default, Resource)]
|
||||
pub enum GameState {
|
||||
#[default]
|
||||
Startup,
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue