Fix ecs changes
This commit is contained in:
parent
d8bebf69df
commit
885e8126ac
7 changed files with 24 additions and 24 deletions
|
@ -25,10 +25,8 @@ impl TScene for GuiHandlerRenderer {
|
||||||
indices: &TargetMode<usize>,
|
indices: &TargetMode<usize>,
|
||||||
world: &mut World,
|
world: &mut World,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
world
|
let gui_handler: &mut GuiHandler = world.resources.get_mut()?;
|
||||||
.resources
|
gui_handler.process(buffer_recorder, indices)
|
||||||
.get_mut::<GuiHandler>()
|
|
||||||
.process(buffer_recorder, indices)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn resize(
|
fn resize(
|
||||||
|
@ -38,11 +36,8 @@ impl TScene for GuiHandlerRenderer {
|
||||||
images: &TargetMode<Vec<Arc<Image>>>,
|
images: &TargetMode<Vec<Arc<Image>>>,
|
||||||
world: &mut World,
|
world: &mut World,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
world.resources.get_mut::<GuiHandler>().resize(
|
let gui_handler: &mut GuiHandler = world.resources.get_mut()?;
|
||||||
window_width as u32,
|
gui_handler.resize(window_width as u32, window_height as u32, images)
|
||||||
window_height as u32,
|
|
||||||
images,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -182,7 +182,7 @@ impl EntityComponent for Audio {
|
||||||
sound.stop_looping().unwrap();
|
sound.stop_looping().unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
self.clear(world.resources.get_mut::<Context>())
|
self.clear(world.resources.get_mut()?)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,14 +62,19 @@ impl Location {
|
||||||
};
|
};
|
||||||
|
|
||||||
entity.insert_component(location);
|
entity.insert_component(location);
|
||||||
Self::setup(entity.multi_mut())?;
|
Self::setup(entity)?;
|
||||||
|
|
||||||
Ok(entity.get_component_mut::<Self>()?)
|
Ok(entity.get_component_mut::<Self>()?)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn setup(entity: &mut EntityObject) -> Result<()> {
|
pub fn setup(entity: &mut EntityObject) -> Result<()> {
|
||||||
let (location, draw, audio): (&mut Location, &mut Draw, &mut Audio) =
|
let (location, draw, audio): (
|
||||||
entity.get_components_mut()?;
|
Option<&mut Location>,
|
||||||
|
Option<&mut Draw>,
|
||||||
|
Option<&mut Audio>,
|
||||||
|
) = entity.get_components_mut()?;
|
||||||
|
|
||||||
|
let location = location.unwrap();
|
||||||
|
|
||||||
if let Some(draw) = draw {
|
if let Some(draw) = draw {
|
||||||
location.set_draw_callback(draw);
|
location.set_draw_callback(draw);
|
||||||
|
|
|
@ -24,6 +24,7 @@ impl<'a> From<&'a FreeCameraControl> for HoldInfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Resource)]
|
||||||
pub struct FreeCameraControl {
|
pub struct FreeCameraControl {
|
||||||
roll: Deg<f32>,
|
roll: Deg<f32>,
|
||||||
pitch: Deg<f32>,
|
pitch: Deg<f32>,
|
||||||
|
|
|
@ -4,7 +4,7 @@ use anyhow::Result;
|
||||||
|
|
||||||
use ecs::*;
|
use ecs::*;
|
||||||
use engine::prelude::{
|
use engine::prelude::{
|
||||||
cgmath::{Vector3, Vector4, vec3, vec4},
|
cgmath::{Vector3, Vector4, vec3},
|
||||||
*,
|
*,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -341,13 +341,11 @@ impl Game {
|
||||||
_entity: Entity,
|
_entity: Entity,
|
||||||
control: &mut FreeSpaceControl,
|
control: &mut FreeSpaceControl,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
const DEFAULT_CENTER: Vector4<f32> = vec4(0.0, 0.0, 0.0, 1.0);
|
|
||||||
|
|
||||||
let scene = world.resources.get_mut::<Scene>();
|
let scene = world.resources.get_mut::<Scene>();
|
||||||
let view = scene.view_mut();
|
let view = scene.view_mut();
|
||||||
|
|
||||||
view.camera_mut()
|
view.camera_mut()
|
||||||
.set_center((control.translation() * DEFAULT_CENTER).truncate());
|
.set_center((control.translation() * Vector4::unit_w()).truncate());
|
||||||
view.camera_mut()
|
view.camera_mut()
|
||||||
.set_eye_dir(control.rotation() * Vector3::unit_y());
|
.set_eye_dir(control.rotation() * Vector3::unit_y());
|
||||||
view.camera_mut()
|
view.camera_mut()
|
||||||
|
|
|
@ -11,14 +11,15 @@ fn main() -> Result<()> {
|
||||||
world_builder.add_system(GameState::update);
|
world_builder.add_system(GameState::update);
|
||||||
world_builder.resources.insert(GameState::default());
|
world_builder.resources.insert(GameState::default());
|
||||||
|
|
||||||
let view = world_builder.resources.get_mut::<Scene>().view_mut();
|
let scene: &mut Scene = world_builder.resources.get_mut()?;
|
||||||
|
let view = scene.view_mut();
|
||||||
let camera_control = FreeCameraControl::new(view)?;
|
let camera_control = FreeCameraControl::new(view)?;
|
||||||
world_builder.resources.insert(camera_control);
|
world_builder.resources.insert(camera_control);
|
||||||
|
|
||||||
world_builder.build().run()
|
world_builder.build().run()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default, Resource)]
|
||||||
enum GameState {
|
enum GameState {
|
||||||
#[default]
|
#[default]
|
||||||
Startup,
|
Startup,
|
||||||
|
@ -60,17 +61,16 @@ impl Game {
|
||||||
fn event(&mut self, world: &mut World, event: EngineEvent<'_>) -> Result<()> {
|
fn event(&mut self, world: &mut World, event: EngineEvent<'_>) -> Result<()> {
|
||||||
match event {
|
match event {
|
||||||
EngineEvent::MouseButtonDown(MouseButton::Left) => {
|
EngineEvent::MouseButtonDown(MouseButton::Left) => {
|
||||||
let camera_control = world.resources.get_mut::<FreeCameraControl>();
|
let camera_control: &mut FreeCameraControl = world.resources.get_mut()?;
|
||||||
camera_control.mouse_down();
|
camera_control.mouse_down();
|
||||||
}
|
}
|
||||||
EngineEvent::MouseButtonUp(MouseButton::Left) => {
|
EngineEvent::MouseButtonUp(MouseButton::Left) => {
|
||||||
let camera_control = world.resources.get_mut::<FreeCameraControl>();
|
let camera_control: &mut FreeCameraControl = world.resources.get_mut()?;
|
||||||
camera_control.mouse_release();
|
camera_control.mouse_release();
|
||||||
}
|
}
|
||||||
EngineEvent::MouseMotion(x, y) => {
|
EngineEvent::MouseMotion(x, y) => {
|
||||||
let mut resources = world.resources.multi_mut();
|
let (scene, camera_control): (&mut Scene, &mut FreeCameraControl) =
|
||||||
let scene = resources.get::<Scene>();
|
world.resources.get_mut()?;
|
||||||
let camera_control = resources.get::<FreeCameraControl>();
|
|
||||||
|
|
||||||
camera_control.mouse_move(x, y, scene.view_mut())?;
|
camera_control.mouse_move(x, y, scene.view_mut())?;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@ impl<T: ExactSizeIterator<Item = PathBuf>> From<T> for SkyBoxImages {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Resource)]
|
||||||
pub struct SkyBox {
|
pub struct SkyBox {
|
||||||
enabled: bool,
|
enabled: bool,
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue