|
|
@ -271,8 +271,6 @@ The shape's less stretched now, but it's still pretty static. You can experiment
|
|
|
|
```rust
|
|
|
|
```rust
|
|
|
|
struct CameraController {
|
|
|
|
struct CameraController {
|
|
|
|
speed: f32,
|
|
|
|
speed: f32,
|
|
|
|
is_up_pressed: bool,
|
|
|
|
|
|
|
|
is_down_pressed: bool,
|
|
|
|
|
|
|
|
is_forward_pressed: bool,
|
|
|
|
is_forward_pressed: bool,
|
|
|
|
is_backward_pressed: bool,
|
|
|
|
is_backward_pressed: bool,
|
|
|
|
is_left_pressed: bool,
|
|
|
|
is_left_pressed: bool,
|
|
|
@ -283,8 +281,6 @@ impl CameraController {
|
|
|
|
fn new(speed: f32) -> Self {
|
|
|
|
fn new(speed: f32) -> Self {
|
|
|
|
Self {
|
|
|
|
Self {
|
|
|
|
speed,
|
|
|
|
speed,
|
|
|
|
is_up_pressed: false,
|
|
|
|
|
|
|
|
is_down_pressed: false,
|
|
|
|
|
|
|
|
is_forward_pressed: false,
|
|
|
|
is_forward_pressed: false,
|
|
|
|
is_backward_pressed: false,
|
|
|
|
is_backward_pressed: false,
|
|
|
|
is_left_pressed: false,
|
|
|
|
is_left_pressed: false,
|
|
|
@ -304,14 +300,6 @@ impl CameraController {
|
|
|
|
} => {
|
|
|
|
} => {
|
|
|
|
let is_pressed = *state == ElementState::Pressed;
|
|
|
|
let is_pressed = *state == ElementState::Pressed;
|
|
|
|
match keycode {
|
|
|
|
match keycode {
|
|
|
|
VirtualKeyCode::Space => {
|
|
|
|
|
|
|
|
self.is_up_pressed = is_pressed;
|
|
|
|
|
|
|
|
true
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
VirtualKeyCode::LShift => {
|
|
|
|
|
|
|
|
self.is_down_pressed = is_pressed;
|
|
|
|
|
|
|
|
true
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
VirtualKeyCode::W | VirtualKeyCode::Up => {
|
|
|
|
VirtualKeyCode::W | VirtualKeyCode::Up => {
|
|
|
|
self.is_forward_pressed = is_pressed;
|
|
|
|
self.is_forward_pressed = is_pressed;
|
|
|
|
true
|
|
|
|
true
|
|
|
@ -352,7 +340,7 @@ impl CameraController {
|
|
|
|
|
|
|
|
|
|
|
|
let right = forward_norm.cross(camera.up);
|
|
|
|
let right = forward_norm.cross(camera.up);
|
|
|
|
|
|
|
|
|
|
|
|
// Redo radius calc in case the up/ down is pressed.
|
|
|
|
// Redo radius calc in case the fowrard/backward is pressed.
|
|
|
|
let forward = camera.target - camera.eye;
|
|
|
|
let forward = camera.target - camera.eye;
|
|
|
|
let forward_mag = forward.magnitude();
|
|
|
|
let forward_mag = forward.magnitude();
|
|
|
|
|
|
|
|
|
|
|
|