#[must_use]
pub fn stick_axis(value: f32) -> f32 {
if value.is_finite() {
value.clamp(-1.0, 1.0)
} else {
0.0
}
}
#[must_use]
pub fn trigger_axis(value: f32) -> f32 {
if value.is_finite() {
value.clamp(0.0, 1.0)
} else {
0.0
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn values_are_clamped_and_finite() {
assert_eq!(stick_axis(1.5), 1.0);
assert_eq!(stick_axis(-7.0), -1.0);
assert_eq!(stick_axis(f32::NAN), 0.0);
assert_eq!(stick_axis(f32::NEG_INFINITY), 0.0);
assert_eq!(stick_axis(-0.5), -0.5);
assert_eq!(trigger_axis(-0.1), 0.0);
assert_eq!(trigger_axis(1.01), 1.0);
assert_eq!(trigger_axis(f32::INFINITY), 0.0);
assert_eq!(trigger_axis(0.5), 0.5);
}
}