Refactor out the keymap
This commit is contained in:
parent
26b7794159
commit
24b1a07f28
|
|
@ -103,6 +103,15 @@ fn prepare_scene(display: &impl Facade) -> Vec<Wireframe> {
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static KEYS_MOVE: &'static [(PhysicalKey, Vec3)] = &[
|
||||||
|
(PhysicalKey::Code(KeyCode::KeyW), vec3(1., 0., 0.)),
|
||||||
|
(PhysicalKey::Code(KeyCode::KeyS), vec3(-1., 0., 0.)),
|
||||||
|
(PhysicalKey::Code(KeyCode::KeyA), vec3(0., 1., 0.)),
|
||||||
|
(PhysicalKey::Code(KeyCode::KeyD), vec3(0., -1., 0.)),
|
||||||
|
(PhysicalKey::Code(KeyCode::Space), vec3(0., 0., 1.)),
|
||||||
|
(PhysicalKey::Code(KeyCode::ShiftLeft), vec3(0., 0., -1.)),
|
||||||
|
];
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let event_loop = EventLoop::builder().build().unwrap();
|
let event_loop = EventLoop::builder().build().unwrap();
|
||||||
let cfg = ConfigTemplateBuilder::new().with_multisampling(8);
|
let cfg = ConfigTemplateBuilder::new().with_multisampling(8);
|
||||||
|
|
@ -137,26 +146,10 @@ fn main() {
|
||||||
t1 = t2;
|
t1 = t2;
|
||||||
dt.as_secs_f32()
|
dt.as_secs_f32()
|
||||||
};
|
};
|
||||||
let v: Vec3 = {
|
let v: Vec3 = KEYS_MOVE
|
||||||
let ctl_left = keys_pressed.contains(&PhysicalKey::Code(KeyCode::KeyA));
|
.iter()
|
||||||
let ctl_right = keys_pressed.contains(&PhysicalKey::Code(KeyCode::KeyD));
|
.filter_map(|(key, dir)| keys_pressed.contains(key).then_some(dir))
|
||||||
let ctl_fwd = keys_pressed.contains(&PhysicalKey::Code(KeyCode::KeyW));
|
.sum();
|
||||||
let ctl_bwd = keys_pressed.contains(&PhysicalKey::Code(KeyCode::KeyS));
|
|
||||||
let ctl_up = keys_pressed.contains(&PhysicalKey::Code(KeyCode::Space));
|
|
||||||
let ctl_down =
|
|
||||||
keys_pressed.contains(&PhysicalKey::Code(KeyCode::ShiftLeft));
|
|
||||||
[
|
|
||||||
(ctl_left, vec3(0., 1., 0.)),
|
|
||||||
(ctl_right, vec3(0., -1., 0.)),
|
|
||||||
(ctl_fwd, vec3(1., 0., 0.)),
|
|
||||||
(ctl_bwd, vec3(-1., 0., 0.)),
|
|
||||||
(ctl_up, vec3(0., 0., 1.)),
|
|
||||||
(ctl_down, vec3(0., 0., -1.)),
|
|
||||||
]
|
|
||||||
.into_iter()
|
|
||||||
.filter_map(|(ctl, dir)| ctl.then_some(dir))
|
|
||||||
.sum()
|
|
||||||
};
|
|
||||||
cam_pos += 100. * dt * (cam_rot.state() * v);
|
cam_pos += 100. * dt * (cam_rot.state() * v);
|
||||||
|
|
||||||
let size = window.inner_size();
|
let size = window.inner_size();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user