Fix half-axis to gamepad button value mapping

From upstream: c32dc3a085.
This commit is contained in:
Luflosi 2020-05-24 19:54:45 +02:00
parent 7ae35631a6
commit e7447f38cf
No known key found for this signature in database
GPG key ID: 4E41E29EDCC345D0

14
glfw/input.c vendored
View file

@ -1436,8 +1436,18 @@ GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state)
if (e->type == _GLFW_JOYSTICK_AXIS)
{
const float value = js->axes[e->index] * e->axisScale + e->axisOffset;
if (value > 0.f)
state->buttons[i] = GLFW_PRESS;
// HACK: This should be baked into the value transform
// TODO: Bake into transform when implementing output modifiers
if (e->axisScale < 0 || e->axisOffset < 0)
{
if (value > 0.f)
state->buttons[i] = GLFW_PRESS;
}
else
{
if (value < 0.f)
state->buttons[i] = GLFW_PRESS;
}
}
else if (e->type == _GLFW_JOYSTICK_HATBIT)
{