mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
Fix js crashing on mobile, respect deadzone and make configurable
This commit is contained in:
parent
dc9ee0a60c
commit
5eb8e39b82
4 changed files with 18 additions and 8 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -85,6 +85,7 @@ typedef GamepadSettings = {
|
|||
var cameraSensitivity:Float;
|
||||
var invertXAxis:Bool;
|
||||
var invertYAxis:Bool;
|
||||
var axisDeadzone:Float;
|
||||
var respawn:Array<String>;
|
||||
var blast:Array<String>;
|
||||
}
|
||||
|
|
@ -165,6 +166,7 @@ class Settings {
|
|||
cameraSensitivity: 1.0,
|
||||
invertXAxis: false,
|
||||
invertYAxis: false,
|
||||
axisDeadzone: 0.15,
|
||||
respawn: ["back"],
|
||||
blast: ["X", "LB", "RB"]
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue