From f3e0d2777a6850a5cd722320423448e1158c0ee0 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Thu, 17 Jan 2019 08:45:23 -0800 Subject: [PATCH] Add strafing --- demo3/src/main.rs | 10 ++++++++++ geometry/src/point.rs | 15 +++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/demo3/src/main.rs b/demo3/src/main.rs index 459a06f9..34ef6449 100644 --- a/demo3/src/main.rs +++ b/demo3/src/main.rs @@ -138,10 +138,20 @@ fn main() { Event::KeyDown { keycode: Some(Keycode::S), .. } => { camera_velocity.set_z(CAMERA_VELOCITY) } + Event::KeyDown { keycode: Some(Keycode::A), .. } => { + camera_velocity.set_x(-CAMERA_VELOCITY) + } + Event::KeyDown { keycode: Some(Keycode::D), .. } => { + camera_velocity.set_x(CAMERA_VELOCITY) + } Event::KeyUp { keycode: Some(Keycode::W), .. } | Event::KeyUp { keycode: Some(Keycode::S), .. } => { camera_velocity.set_z(0.0); } + Event::KeyUp { keycode: Some(Keycode::A), .. } | + Event::KeyUp { keycode: Some(Keycode::D), .. } => { + camera_velocity.set_x(0.0); + } _ => {} } } diff --git a/geometry/src/point.rs b/geometry/src/point.rs index 27cfc57b..65eaf51b 100644 --- a/geometry/src/point.rs +++ b/geometry/src/point.rs @@ -140,11 +140,26 @@ impl Point4DF32 { self.0[3] } + #[inline] + pub fn set_x(&mut self, x: f32) { + self.0[0] = x + } + + #[inline] + pub fn set_y(&mut self, y: f32) { + self.0[1] = y + } + #[inline] pub fn set_z(&mut self, z: f32) { self.0[2] = z } + #[inline] + pub fn set_w(&mut self, w: f32) { + self.0[3] = w + } + #[inline] pub fn perspective_divide(self) -> Point4DF32 { self * Point4DF32::splat(1.0 / self.w())