Huge input update, FPS Camera controls system
Long day. I now store winit:🪟:Window in a mutex.
This commit is contained in:
parent
1e9b997aeb
commit
46c8c32819
15 changed files with 307 additions and 39 deletions
|
|
@ -5,11 +5,13 @@ use crate::system::{SystemContext, SystemManager};
|
|||
use raidillon_platform::PlatformContext;
|
||||
use raidillon_core::DebugUIBuffer;
|
||||
use raidillon_core::engine::EngineTrait;
|
||||
use crate::input::InputState;
|
||||
|
||||
pub struct Engine {
|
||||
pub scene_manager: SceneManager,
|
||||
pub system_manager: SystemManager,
|
||||
debug_ui_buffer: Rc<RefCell<DebugUIBuffer>>,
|
||||
input_state: Rc<RefCell<InputState>>,
|
||||
}
|
||||
|
||||
impl EngineTrait for Engine {
|
||||
|
|
@ -21,6 +23,7 @@ impl EngineTrait for Engine {
|
|||
scene_manager,
|
||||
system_manager,
|
||||
debug_ui_buffer: Rc::new(RefCell::new(DebugUIBuffer::new())),
|
||||
input_state: Default::default(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -35,6 +38,7 @@ impl EngineTrait for Engine {
|
|||
scene: self.scene_manager.current_mut(),
|
||||
platform_context,
|
||||
debug_ui_buffer: self.debug_ui_buffer.clone(),
|
||||
input_state: self.input_state.clone(),
|
||||
};
|
||||
|
||||
// Engine Loading Stage 2: load world
|
||||
|
|
@ -50,6 +54,7 @@ impl EngineTrait for Engine {
|
|||
scene: self.scene_manager.current_mut(),
|
||||
platform_context,
|
||||
debug_ui_buffer: self.debug_ui_buffer.clone(),
|
||||
input_state: self.input_state.clone(),
|
||||
};
|
||||
|
||||
for system in self.system_manager.systems.values_mut() {
|
||||
|
|
@ -62,6 +67,7 @@ impl EngineTrait for Engine {
|
|||
scene: self.scene_manager.current_mut(),
|
||||
platform_context,
|
||||
debug_ui_buffer: self.debug_ui_buffer.clone(),
|
||||
input_state: self.input_state.clone(),
|
||||
};
|
||||
|
||||
for system in self.system_manager.systems.values_mut() {
|
||||
|
|
@ -70,10 +76,13 @@ impl EngineTrait for Engine {
|
|||
}
|
||||
|
||||
fn handle_event(&mut self, platform_context: PlatformContext) {
|
||||
self.input_state.borrow_mut().handle_event(&platform_context.current_event);
|
||||
|
||||
let mut ctx = SystemContext {
|
||||
scene: self.scene_manager.current_mut(),
|
||||
platform_context,
|
||||
debug_ui_buffer: self.debug_ui_buffer.clone(),
|
||||
input_state: self.input_state.clone(),
|
||||
};
|
||||
|
||||
for system in self.system_manager.systems.values_mut() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue