From 1916b71f744c6d616108980a25898f42a01aafbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaakko=20Ker=C3=A4nen?= Date: Sat, 15 Dec 2018 17:05:09 +0200 Subject: [PATCH] Input|Client: Prevent interference from nonexistent controller axes When applying a game controller preset, disable all extra game controller axes. IssueID #2307 --- .../modules/controllers.ds | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/doomsday/apps/client/net.dengine.client.pack/modules/controllers.ds b/doomsday/apps/client/net.dengine.client.pack/modules/controllers.ds index 046e8a73aa..fb1bafba79 100644 --- a/doomsday/apps/client/net.dengine.client.pack/modules/controllers.ds +++ b/doomsday/apps/client/net.dengine.client.pack/modules/controllers.ds @@ -52,6 +52,12 @@ record Gamepad() Console.set(var, 0) end end + + def disableAllAxes() + for var in Console.listVars('input-joy-.*-factor') + Console.set(var, 0) + end + end end record GenericGamepad(Gamepad) @@ -131,12 +137,13 @@ record PS3Gamepad(Gamepad) event('game', right, 'impulse nextitem') event('game', tri, 'impulse useitem') end - - self.resetDeadzones() - + # Deadzones. + self.resetDeadzones() + self.disableAllAxes() for axis in ['x', 'y', 'z', 'w'] Console.set('input-joy-%s-deadzone' % axis, 0.15) + Console.set('input-joy-%s-factor' % axis, 1) end end end @@ -212,12 +219,13 @@ record PS4Gamepad(Gamepad) event('game', right, 'impulse nextitem') event('game', tri, 'impulse useitem') end - - self.resetDeadzones() - + # Deadzones. + self.resetDeadzones() + self.disableAllAxes() for axis in ['x', 'y', 'z', 'axis06'] Console.set('input-joy-%s-deadzone' % axis, 0.15) + Console.set('input-joy-%s-factor' % axis, 1) end end end @@ -292,12 +300,14 @@ record XboxWindowsGamepad(Gamepad) event('game', y, 'impulse useitem') end - self.resetDeadzones() - # Deadzones. + self.resetDeadzones() + self.disableAllAxes() for axis in ['x', 'y', 'w', 'axis05'] Console.set('input-joy-%s-deadzone' % axis, 0.15) + Console.set('input-joy-%s-factor' % axis, 1) end + Console.set('input-joy-z-factor', 1) end end @@ -376,11 +386,12 @@ record XboxMacGamepad(Gamepad) event('game', y, 'impulse useitem') end - self.resetDeadzones() - # Deadzones. + self.resetDeadzones() + self.disableAllAxes() for axis in ['x', 'y', 'w', 'axis05'] Console.set('input-joy-%s-deadzone' % axis, 0.15) + Console.set('input-joy-%s-factor' % axis, 1) end # Thrusters are stick axes, but we want them to go from 0 to 1.