diff options
author | Lisandro Lorea <lisandrolorea@gmail.com> | 2024-07-25 00:35:05 -0300 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-09-17 08:57:45 +0200 |
commit | d92f9017c67ae93a51ef6796520ecc8e12d09d2e (patch) | |
tree | 9ef3fae2d924536b0313b8f4d9bc9c84997bf5ed /platform/linuxbsd/export/export.cpp | |
parent | 34251cf5b3a16e65ac4c0322bdee722699865f7c (diff) | |
download | redot-engine-d92f9017c67ae93a51ef6796520ecc8e12d09d2e.tar.gz |
Fix gamepad triggers not working on web exports
Fixes #81758
DisplayServerWeb::process_joypads handles buttons 6 and 7 of the
HTML5 Standard Gamepad as a special case by doing:
`input->joy_axis(idx, (JoyAxis)b, s_btns[b]);`
This doesn't work because there is no JoyAxis 6 or 7 in the enum
To fix this we use JoyAxis::TRIGGER_LEFT and TRIGGER_RIGHT for button 6
and 7
However since we are now lying to input->joy_axis we also need to lie in
the mappings for the standard gamepad in godotcontrollersdb.txt,
otherwise input->joy_axis will try to find a mapping to axis 4(LT) and
axis 5(RT) that's not defined.
Therefore we set lefttrigger to +a4 and righttrigger to +a5 in the
mapping, to match what we are actually sending.
A cleaner, and more involved fix to this would be modifying
input->joy_button so that it can handle analog buttons and map them to
axes preserving their value instead of converting to boolean
(cherry picked from commit 9dd372f3164f3daf01c02d1f4ba304ffde47f394)
Diffstat (limited to 'platform/linuxbsd/export/export.cpp')
0 files changed, 0 insertions, 0 deletions