Fixed issue where GetAnalogActionData magnitude of joystick was always maximum.

This commit is contained in:
Mr_Goldberg 2019-09-12 07:21:11 -04:00
parent 663728edca
commit 09704ae243
No known key found for this signature in database
GPG Key ID: 8597D87419DEF278
2 changed files with 11 additions and 0 deletions

View File

@ -554,6 +554,10 @@ static void GamepadUpdateStick(GAMEPAD_AXIS* axis, float deadzone) {
axis->nx = axis->x / axis->length;
axis->ny = axis->y / axis->length;
//fix special case
if (axis->nx < -1.0) axis->nx = -1.0;
if (axis->ny < -1.0) axis->ny = -1.0;
// adjust length for deadzone and find normalized length
axis->length -= deadzone;
axis->length /= (32767.0f - deadzone);

View File

@ -495,9 +495,16 @@ ControllerAnalogActionData_t GetAnalogActionData( ControllerHandle_t controllerH
if (a >= 10) {
int joystick_id = a - 10;
GamepadStickNormXY((GAMEPAD_DEVICE)(controllerHandle - 1), (GAMEPAD_STICK) joystick_id, &data.x, &data.y);
float length = GamepadStickLength((GAMEPAD_DEVICE)(controllerHandle - 1), (GAMEPAD_STICK) joystick_id);
data.x = data.x * length;
data.y = data.y * length;
} else {
data.x = GamepadTriggerLength((GAMEPAD_DEVICE)(controllerHandle - 1), (GAMEPAD_TRIGGER) a);
}
if (data.x || data.y) {
break;
}
}
return data;