From 5eb8e39b82ace182dc8482305de36e83306a2b5d Mon Sep 17 00:00:00 2001 From: Terry Hearst Date: Sat, 11 Feb 2023 15:53:45 -0500 Subject: [PATCH] Fix js crashing on mobile, respect deadzone and make configurable --- src/CameraController.hx | 2 +- src/Gamepad.hx | 20 ++++++++++++++------ src/Marble.hx | 2 +- src/Settings.hx | 2 ++ 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/CameraController.hx b/src/CameraController.hx index e3e9dfc8..7d6d3030 100644 --- a/src/CameraController.hx +++ b/src/CameraController.hx @@ -163,7 +163,7 @@ class CameraController extends Object { var cameraPitchDelta = (Key.isDown(Settings.controlsSettings.camBackward) ? 1 : 0) - (Key.isDown(Settings.controlsSettings.camForward) ? 1 : 0) - - Gamepad.getAxis(Settings.gamepadSettings.cameraYAxis); + + Gamepad.getAxis(Settings.gamepadSettings.cameraYAxis); if (Settings.gamepadSettings.invertYAxis) cameraPitchDelta = -cameraPitchDelta; nextCameraPitch += 0.75 * 5 * cameraPitchDelta * dt * Settings.gamepadSettings.cameraSensitivity; diff --git a/src/Gamepad.hx b/src/Gamepad.hx index 98bcd227..43150775 100644 --- a/src/Gamepad.hx +++ b/src/Gamepad.hx @@ -2,6 +2,7 @@ package src; import hxd.Pad; import src.Console; +import src.Settings; class Gamepad { public static var gamepad:Pad = Pad.createDummy(); @@ -12,7 +13,7 @@ class Gamepad { public static function onPad(pad:Pad) { Console.log("Gamepad found"); - pad.axisDeadZone = 0.2; + pad.axisDeadZone = Settings.gamepadSettings.axisDeadzone; pad.onDisconnect = function() { Console.log("Gamepad disconnected"); gamepad = Pad.createDummy(); @@ -100,9 +101,16 @@ class Gamepad { } public static function getAxis(axis:String) { - var axisId = getId(axis); - if (axisId < 0 || axisId > gamepad.values.length) - return 0.0; - return gamepad.values[axisId]; + switch (axis) { + case "analogX": + return gamepad.xAxis; + case "analogY": + return gamepad.yAxis; + case "ranalogX": + return gamepad.rxAxis; + case "ranalogY": + return gamepad.ryAxis; + } + return 0.0; } -} \ No newline at end of file +} diff --git a/src/Marble.hx b/src/Marble.hx index 06e722f8..6fa9500c 100644 --- a/src/Marble.hx +++ b/src/Marble.hx @@ -1687,7 +1687,7 @@ class Marble extends GameObject { var move = new Move(); move.d = new Vector(); if (this.controllable && this.mode != Finish && !MarbleGame.instance.paused && !this.level.isWatching) { - move.d.x = -Gamepad.getAxis(Settings.gamepadSettings.moveYAxis); + move.d.x = Gamepad.getAxis(Settings.gamepadSettings.moveYAxis); move.d.y = -Gamepad.getAxis(Settings.gamepadSettings.moveXAxis); if (Key.isDown(Settings.controlsSettings.forward)) { move.d.x -= 1; diff --git a/src/Settings.hx b/src/Settings.hx index 10290143..fcbd2e45 100644 --- a/src/Settings.hx +++ b/src/Settings.hx @@ -85,6 +85,7 @@ typedef GamepadSettings = { var cameraSensitivity:Float; var invertXAxis:Bool; var invertYAxis:Bool; + var axisDeadzone:Float; var respawn:Array; var blast:Array; } @@ -165,6 +166,7 @@ class Settings { cameraSensitivity: 1.0, invertXAxis: false, invertYAxis: false, + axisDeadzone: 0.15, respawn: ["back"], blast: ["X", "LB", "RB"] }