1
Fork 0

pan and zoom on gamepad

This commit is contained in:
Andy Killorin 2023-09-16 16:21:40 -05:00
parent f7fa101ce2
commit 42843165fc
Signed by: ank
GPG key ID: B6241CA3B552BCA4
2 changed files with 21 additions and 8 deletions

View file

@ -33,7 +33,8 @@ fn main() {
} }
} }
fn analog_input(chan: u8, val: i8) { fn analog_input(chan: u8, val: f32) {
let val = (val * 127.0) as i8;
unsafe { unsafe {
pirates::KEYCODE[0] = chan; pirates::KEYCODE[0] = chan;
pirates::KEYCODE[1] = (val + 127) as u8; pirates::KEYCODE[1] = (val + 127) as u8;
@ -60,17 +61,24 @@ fn main() {
#[cfg(feature = "gamepad")] #[cfg(feature = "gamepad")]
while let Some(event) = gilrs.next_event() { while let Some(event) = gilrs.next_event() {
gamepad_handle = Some(event.id); gamepad_handle = Some(event.id);
println!("gampad");
} }
#[cfg(feature = "gamepad")] #[cfg(feature = "gamepad")]
if let Some(gamepad) = gamepad_handle.map(|h| gilrs.gamepad(h)) { if let Some(gamepad) = gamepad_handle.map(|h| gilrs.gamepad(h)) {
let val = gamepad.state() gamepad.axis_data(Axis::LeftStickX).map(|axis| {
.axis_data(gamepad.axis_code(Axis::LeftStickX).unwrap()); analog_input(1, axis.value());
if val.is_some() { });
let val = dbg!(val.unwrap().value() * 127.0) as i8; if gamepad.is_pressed(Button::RightTrigger) {
dbg!(val); gamepad.axis_data(Axis::RightStickY).map(|axis| {
analog_input(1, val); analog_input(3, dbg!(axis.value()));
});
gamepad.axis_data(Axis::RightStickX).map(|axis| {
analog_input(4, dbg!(axis.value()));
});
} else {
gamepad.axis_data(Axis::RightStickY).map(|axis| {
analog_input(0, dbg!(axis.value()));
});
} }
if gamepad.is_pressed(Button::DPadLeft) { if gamepad.is_pressed(Button::DPadLeft) {
keyboard_input(65) keyboard_input(65)

View file

@ -23,6 +23,8 @@ use spin::Mutex;
#[cfg(feature = "rayon")] #[cfg(feature = "rayon")]
use rayon::prelude::*; use rayon::prelude::*;
use crate::noise::lerp;
mod sampler; mod sampler;
mod noise; mod noise;
@ -115,7 +117,10 @@ fn render_frame(buffer: &mut [u32; WIDTH*HEIGHT]) {
173 => camera[2] *= 1.1, // - 173 => camera[2] *= 1.1, // -
65 => boat.theta -= 10.0, // A 65 => boat.theta -= 10.0, // A
68 => boat.theta += 10.0, // D 68 => boat.theta += 10.0, // D
0 => camera[2] *= 1.0 - (key[1] as f32 - 127.0) * 0.0004, // analog zoom
1 => boat.theta += (key[1] as f32 - 127.0) * 0.031, // analog rudder 1 => boat.theta += (key[1] as f32 - 127.0) * 0.031, // analog rudder
3 => camera[1] -= (key[1] as f32 - 127.0) * 0.004, // pan[y]
4 => camera[0] += (key[1] as f32 - 127.0) * 0.004, // pan[x]
_ => {} _ => {}
} }
} }