#ifndef DEVICE_GAMEPAD_NORMALIZATION_H_
#define DEVICE_GAMEPAD_NORMALIZATION_H_
namespace device {
struct GamepadLogicalBounds {
double minimum = 0.0;
double maximum = 0.0;
};
template <class T>
double NormalizeGamepadAxis(T value, const GamepadLogicalBounds& bounds) {
const auto& [minimum, maximum] = bounds;
if (minimum == maximum) {
return 0.0;
}
return (2.0 * (value - minimum) / (maximum - minimum)) - 1.0;
}
template <class T>
double NormalizeGamepadButton(T value, const GamepadLogicalBounds& bounds) {
const auto& [minimum, maximum] = bounds;
if (minimum == maximum) {
return 0.0;
}
return (value - minimum) / (maximum - minimum);
}
}
#endif