Huge input update, FPS Camera controls system

Long day. I now store winit:🪟:Window in a mutex.
This commit is contained in:
reo 2025-09-28 01:31:14 +03:00
parent 1e9b997aeb
commit 46c8c32819
15 changed files with 307 additions and 39 deletions

View file

@ -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() {