diff --git a/src/g_build_ticcmd.cpp b/src/g_build_ticcmd.cpp index 7f41eb865..81d431a12 100644 --- a/src/g_build_ticcmd.cpp +++ b/src/g_build_ticcmd.cpp @@ -372,6 +372,16 @@ class TiccmdBuilder } kart_analog_input(); + + // Digital users can input diagonal-back for shallow turns. + // + // There's probably some principled way of doing this in the gamepad handler itself, + // by only applying this filtering to inputs sourced from an axis. This is a little + // ugly with the current abstractions, though, and there's a fortunate trick here: + // if you can input full strength turns on both axes, either you're using a fucking + // square gate, or you're not on an analog device. + if (joystickvector.yaxis >= JOYAXISRANGE && abs(cmd->turning) == KART_FULLTURN) // >= beacuse some analog devices can go past JOYAXISRANGE (?!) + cmd->turning /= 2; } void common_button_input()