use std::collections::HashMap; use keyboard_state::KeyboardState; use mouse_state::MouseState; use virtual_binding::VirtualBinding; use virtual_input::VirtualInput; use winit::event::WindowEvent; pub mod keyboard_state; pub mod mouse_state; pub mod virtual_binding; pub mod virtual_input; pub mod virtual_state; #[derive(Default)] pub struct InputManager { keyboard_state: KeyboardState, mouse_state: MouseState, virtual_input: VirtualInput, } impl InputManager { pub fn process_window_event(&mut self, event: &WindowEvent) { match event { WindowEvent::KeyboardInput { event, .. } => { self.keyboard_state .process_window_event(event, &mut self.virtual_input); } WindowEvent::CursorMoved { position, .. } => { self.mouse_state.process_window_event(position); } _ => {} } } /// Updates deltas before running update pub fn update(&mut self) { self.mouse_state.update(&mut self.virtual_input); } pub fn get_mouse_state(&self) -> &MouseState { &self.mouse_state } pub fn get_keyboard_state(&self) -> &KeyboardState { &self.keyboard_state } pub fn get_virtual_input(&self) -> &VirtualInput { &self.virtual_input } pub fn add_virtual_binding(&mut self, value_name: String, binding: VirtualBinding) { self.virtual_input.add_binding(value_name, binding); } pub fn add_virtual_bindings(&mut self, value_name: String, bindings: Vec) { self.virtual_input.add_bindings(value_name, bindings); } pub fn get_virtual_input_state(&self, value_name: &str) -> f32 { self.virtual_input.get_state(value_name) } }