Added mouse input
parent
70c9ec3b92
commit
f4c0e91851
|
@ -137,13 +137,16 @@ fn main() -> Result<()> {
|
||||||
},
|
},
|
||||||
..
|
..
|
||||||
} => {
|
} => {
|
||||||
player.process_key(state, key);
|
player.input.process_key(state, key);
|
||||||
|
}
|
||||||
|
WindowEvent::CursorMoved { position, .. } => {
|
||||||
|
player.input.process_mouse(position);
|
||||||
}
|
}
|
||||||
WindowEvent::MouseInput { state, button, .. } => {
|
WindowEvent::MouseInput { state, button, .. } => {
|
||||||
player.process_click(state, button);
|
player.input.process_click(state, button);
|
||||||
}
|
}
|
||||||
WindowEvent::MouseWheel { delta, phase, .. } => {
|
WindowEvent::MouseWheel { delta, phase, .. } => {
|
||||||
player.process_scroll(delta, phase);
|
player.input.process_scroll(delta, phase);
|
||||||
}
|
}
|
||||||
WindowEvent::Resized(_) => {
|
WindowEvent::Resized(_) => {
|
||||||
gpu.resize(&content);
|
gpu.resize(&content);
|
||||||
|
|
|
@ -1,14 +1,20 @@
|
||||||
use winit::event::{ElementState, MouseButton, MouseScrollDelta, TouchPhase, VirtualKeyCode};
|
use winit::{
|
||||||
|
dpi::PhysicalPosition,
|
||||||
|
event::{ElementState, MouseButton, MouseScrollDelta, TouchPhase, VirtualKeyCode},
|
||||||
|
};
|
||||||
|
|
||||||
pub struct InputStatus {
|
pub struct InputStatus {
|
||||||
// Parameters
|
// Parameters
|
||||||
scroll_speed: f32,
|
scroll_speed: f32,
|
||||||
|
|
||||||
|
mouse_position: PhysicalPosition<f32>,
|
||||||
|
|
||||||
// Continuous keys
|
// Continuous keys
|
||||||
key_left: bool,
|
key_left: bool,
|
||||||
key_right: bool,
|
key_right: bool,
|
||||||
key_thrust: bool,
|
key_thrust: bool,
|
||||||
key_guns: bool,
|
key_guns: bool,
|
||||||
|
key_leftclick: bool,
|
||||||
|
|
||||||
// One-shot keys (audomatically released at the end of each frame)
|
// One-shot keys (audomatically released at the end of each frame)
|
||||||
key_land: bool,
|
key_land: bool,
|
||||||
|
@ -23,6 +29,8 @@ impl InputStatus {
|
||||||
key_thrust: false,
|
key_thrust: false,
|
||||||
key_guns: false,
|
key_guns: false,
|
||||||
key_land: false,
|
key_land: false,
|
||||||
|
key_leftclick: false,
|
||||||
|
mouse_position: PhysicalPosition { x: 0.0, y: 0.0 },
|
||||||
v_scroll: 0.0,
|
v_scroll: 0.0,
|
||||||
scroll_speed: 10.0,
|
scroll_speed: 10.0,
|
||||||
}
|
}
|
||||||
|
@ -65,9 +73,17 @@ impl InputStatus {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn process_mouse(&mut self, position: &PhysicalPosition<f64>) {
|
||||||
|
self.mouse_position = PhysicalPosition {
|
||||||
|
x: position.x as f32,
|
||||||
|
y: position.y as f32,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
pub fn process_click(&mut self, state: &ElementState, key: &MouseButton) {
|
pub fn process_click(&mut self, state: &ElementState, key: &MouseButton) {
|
||||||
let _down = state == &ElementState::Pressed;
|
let down = state == &ElementState::Pressed;
|
||||||
match key {
|
match key {
|
||||||
|
MouseButton::Left => self.key_leftclick = down,
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
use galactica_content::{Content, SystemHandle, SystemObjectHandle};
|
use galactica_content::{Content, SystemHandle, SystemObjectHandle};
|
||||||
use rapier2d::geometry::ColliderHandle;
|
use rapier2d::geometry::ColliderHandle;
|
||||||
use winit::event::{ElementState, MouseButton, MouseScrollDelta, TouchPhase, VirtualKeyCode};
|
|
||||||
|
|
||||||
use crate::{camera::Camera, inputstatus::InputStatus, PlayerStatus};
|
use crate::{camera::Camera, inputstatus::InputStatus, PlayerStatus};
|
||||||
|
|
||||||
|
@ -57,18 +56,6 @@ impl PlayerAgent {
|
||||||
self.camera.aspect = v
|
self.camera.aspect = v
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn process_key(&mut self, state: &ElementState, key: &VirtualKeyCode) {
|
|
||||||
self.input.process_key(state, key)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn process_click(&mut self, state: &ElementState, key: &MouseButton) {
|
|
||||||
self.input.process_click(state, key)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn process_scroll(&mut self, delta: &MouseScrollDelta, phase: &TouchPhase) {
|
|
||||||
self.input.process_scroll(delta, phase)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn step(&mut self, ct: &Content, status: PlayerStatus) {
|
pub fn step(&mut self, ct: &Content, status: PlayerStatus) {
|
||||||
if self.input.get_v_scroll() != 0.0 {
|
if self.input.get_v_scroll() != 0.0 {
|
||||||
self.camera.zoom = (self.camera.zoom + self.input.get_v_scroll())
|
self.camera.zoom = (self.camera.zoom + self.input.get_v_scroll())
|
||||||
|
|
Loading…
Reference in New Issue