Refactor input
Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 7m43s
Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 7m43s
This commit is contained in:
parent
1976a8b53e
commit
8c42e7b139
14 changed files with 439 additions and 159 deletions
|
@ -1,4 +1,4 @@
|
|||
use crate::core::input::InputState;
|
||||
use crate::core::input::InputManager;
|
||||
use crate::core::render::primitives::camera::Camera;
|
||||
use crate::core::render::primitives::vertex::Vertex2D;
|
||||
use crate::core::render::render_context::RenderContext;
|
||||
|
@ -115,39 +115,30 @@ impl Scene for MainScene {
|
|||
})
|
||||
}
|
||||
|
||||
fn update(&mut self, render_context: &RenderContext, input_state: &InputState, timer: &Timer) {
|
||||
fn update(
|
||||
&mut self,
|
||||
render_context: &RenderContext,
|
||||
input_manager: &InputManager,
|
||||
timer: &Timer,
|
||||
) {
|
||||
let state = self.state.as_mut().unwrap();
|
||||
|
||||
let speed = 50.0 * timer.delta_time();
|
||||
|
||||
let mut rot = Quat::default();
|
||||
rot *= Quat::from_rotation_y(input_state.mouse_state.delta.x * speed.to_radians());
|
||||
rot *= Quat::from_rotation_x(input_state.mouse_state.delta.y * speed.to_radians());
|
||||
rot *= Quat::from_rotation_y(
|
||||
input_manager.get_virtual_input_state("mouse_x") * speed.to_radians(),
|
||||
);
|
||||
rot *= Quat::from_rotation_x(
|
||||
input_manager.get_virtual_input_state("mouse_y") * speed.to_radians(),
|
||||
);
|
||||
state.camera.get_transform_mut().rotate(rot);
|
||||
|
||||
let translation_x = if input_state.get_key_state(PhysicalKey::Code(KeyCode::KeyA))
|
||||
== &ElementState::Pressed
|
||||
{
|
||||
timer.delta_time() * speed
|
||||
} else if input_state.get_key_state(PhysicalKey::Code(KeyCode::KeyD))
|
||||
== &ElementState::Pressed
|
||||
{
|
||||
timer.delta_time() * -speed
|
||||
} else {
|
||||
timer.delta_time() * 0.0
|
||||
};
|
||||
let translation_x =
|
||||
input_manager.get_virtual_input_state("move_right") * timer.delta_time() * speed;
|
||||
|
||||
let translation_z = if input_state.get_key_state(PhysicalKey::Code(KeyCode::KeyW))
|
||||
== &ElementState::Pressed
|
||||
{
|
||||
timer.delta_time() * speed
|
||||
} else if input_state.get_key_state(PhysicalKey::Code(KeyCode::KeyS))
|
||||
== &ElementState::Pressed
|
||||
{
|
||||
timer.delta_time() * -speed
|
||||
} else {
|
||||
timer.delta_time() * 0.0
|
||||
};
|
||||
let translation_z =
|
||||
input_manager.get_virtual_input_state("move_forward") * timer.delta_time() * speed;
|
||||
|
||||
state
|
||||
.camera
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue