diff --git a/flixel/input/gamepad/FlxGamepad.hx b/flixel/input/gamepad/FlxGamepad.hx index 5464c065be..fdf08d557d 100644 --- a/flixel/input/gamepad/FlxGamepad.hx +++ b/flixel/input/gamepad/FlxGamepad.hx @@ -184,9 +184,17 @@ class FlxGamepad implements IFlxDestroyable control = _device.getControlAt(i); //quick absolute value for analog sticks - var value = Math.abs(control.value); button = getButton(i); + if (isAxisForAnalogStick(i)) + { + handleAxisMove(i, control.value, button.value); + } + + button.value = control.value; + + var value = Math.abs(control.value); + if (value < deadZone) { button.release(); @@ -264,7 +272,7 @@ class FlxGamepad implements IFlxDestroyable hat = FlxDestroyUtil.put(hat); ball = FlxDestroyUtil.put(ball); - hat = null; + hat = null; ball = null; #end } @@ -605,7 +613,7 @@ class FlxGamepad implements IFlxDestroyable { return getAnalogYAxisValue(Stick); } - + /** * Whether any buttons have the specified input state. */ @@ -730,6 +738,53 @@ class FlxGamepad implements IFlxDestroyable return 0; } + private function handleAxisMove(axis:Int, newValue:Float, oldValue:Float) + { + newValue = applyAxisFlip(newValue, axis); + oldValue = applyAxisFlip(oldValue, axis); + + //check to see if we should send digital inputs as well as analog + var stick:FlxGamepadAnalogStick = getAnalogStickByAxis(axis); + if (stick.mode == ONLY_DIGITAL || stick.mode == BOTH) + { + handleAxisMoveSub(stick, axis, newValue, oldValue, 1.0); + handleAxisMoveSub(stick, axis, newValue, oldValue, -1.0); + + if (stick.mode == ONLY_DIGITAL) + { + //still haven't figured out how to suppress the analog inputs properly. Oh well. + } + } + } + + private function handleAxisMoveSub(stick:FlxGamepadAnalogStick, axis:Int, value:Float, oldValue:Float, sign:Float=1.0) + { + var digitalButton = -1; + + if (axis == stick.x) + { + digitalButton = (sign < 0) ? stick.rawLeft : stick.rawRight; + } + else if (axis == stick.y) + { + digitalButton = (sign < 0) ? stick.rawUp : stick.rawDown; + } + + var threshold = stick.digitalThreshold; + var valueSign = value * sign; + var oldValueSign = oldValue * sign; + + if (valueSign > threshold && oldValueSign <= threshold) + { + var btn = getButton(digitalButton); + if (btn != null) btn.press(); + } + else if (valueSign <= threshold && oldValueSign > threshold) + { + var btn = getButton(digitalButton); + if (btn != null) btn.release(); + } + } private function createMappingForModel(model:FlxGamepadModel):FlxGamepadMapping { return switch (model) diff --git a/flixel/input/gamepad/FlxGamepadAnalogStick.hx b/flixel/input/gamepad/FlxGamepadAnalogStick.hx index 19e18c523f..d605cec181 100644 --- a/flixel/input/gamepad/FlxGamepadAnalogStick.hx +++ b/flixel/input/gamepad/FlxGamepadAnalogStick.hx @@ -32,7 +32,7 @@ class FlxGamepadAnalogStick /** * when analog inputs are received, how to process them digitally */ - public var mode(default, null):FlxAnalogToDigitalMode = ONLY_ANALOG; + public var mode(default, null):FlxAnalogToDigitalMode = BOTH; public function new(x:Int, y:Int, ?settings:FlxGamepadAnalogStickSettings) { @@ -42,12 +42,12 @@ class FlxGamepadAnalogStick if (settings == null) return; - mode = (settings.mode != null) ? settings.mode : ONLY_ANALOG; + mode = (settings.mode != null) ? settings.mode : BOTH; rawUp = (settings.up != null) ? settings.up : -1; rawDown = (settings.down != null) ? settings.down : -1; rawLeft = (settings.left != null) ? settings.left : -1; rawRight = (settings.right != null) ? settings.right : -1; - digitalThreshold = (settings.threshold != null) ? settings.threshold : -1; + digitalThreshold = (settings.threshold != null) ? settings.threshold : 0.5; } public function toString():String diff --git a/flixel/input/gamepad/FlxGamepadButton.hx b/flixel/input/gamepad/FlxGamepadButton.hx index aff6a9e153..9af83df456 100644 --- a/flixel/input/gamepad/FlxGamepadButton.hx +++ b/flixel/input/gamepad/FlxGamepadButton.hx @@ -4,6 +4,11 @@ import flixel.input.FlxInput; class FlxGamepadButton extends FlxInput { + /** + * Optional analog value, so we can check when the value has changed from the last frame + */ + public var value:Float = 0; + #if flash private var _pressed:Bool = false; diff --git a/flixel/input/gamepad/FlxGamepadInputID.hx b/flixel/input/gamepad/FlxGamepadInputID.hx index e37ebf2d61..b872abf2a6 100644 --- a/flixel/input/gamepad/FlxGamepadInputID.hx +++ b/flixel/input/gamepad/FlxGamepadInputID.hx @@ -90,6 +90,24 @@ abstract FlxGamepadInputID(Int) from Int to Int /**an extra digital button that doesn't fit cleanly into the universal template**/ var EXTRA_3 = 33; + /**left analog stick as a dpad, pushed up**/ + var LEFT_STICK_DIGITAL_UP = 34; + /**left analog stick as a dpad, pushed right**/ + var LEFT_STICK_DIGITAL_RIGHT = 35; + /**left analog stick as a dpad, pushed down**/ + var LEFT_STICK_DIGITAL_DOWN = 36; + /**left analog stick as a dpad, pushed left**/ + var LEFT_STICK_DIGITAL_LEFT = 37; + + /**left analog stick as a dpad, pushed up**/ + var RIGHT_STICK_DIGITAL_UP = 38; + /**left analog stick as a dpad, pushed right**/ + var RIGHT_STICK_DIGITAL_RIGHT = 39; + /**left analog stick as a dpad, pushed down**/ + var RIGHT_STICK_DIGITAL_DOWN = 40; + /**left analog stick as a dpad, pushed left**/ + var RIGHT_STICK_DIGITAL_LEFT = 41; + @:from public static inline function fromString(s:String) { diff --git a/flixel/input/gamepad/FlxGamepadManager.hx b/flixel/input/gamepad/FlxGamepadManager.hx index 09421a41d2..bc8144ad98 100644 --- a/flixel/input/gamepad/FlxGamepadManager.hx +++ b/flixel/input/gamepad/FlxGamepadManager.hx @@ -453,6 +453,7 @@ class FlxGamepadManager implements IFlxInputManager { var isForStick = gamepad.isAxisForAnalogStick(i); var isForMotion = gamepad.mapping.isAxisForMotion(i); + if (!isForStick && !isForMotion) { // in legacy this returns a (-1, 1) range, but in flash/next it @@ -461,50 +462,7 @@ class FlxGamepadManager implements IFlxInputManager } else if (isForStick) { - //check to see if we should send digital inputs as well as analog - var stick:FlxGamepadAnalogStick = gamepad.getAnalogStickByAxis(i); - if (stick.mode == ONLY_DIGITAL || stick.mode == BOTH) - { - var newVal = newAxis[i]; - var oldVal = oldAxis[i]; - - var neg = stick.digitalThreshold * -1; - var pos = stick.digitalThreshold; - var digitalButton = -1; - - //pressed/released for digital LEFT/UP - if (newVal < neg && oldVal >= neg) - { - if (i == stick.x) digitalButton = stick.rawLeft; - else if (i == stick.y) digitalButton = stick.rawUp; - handleButtonDown(device, digitalButton); - } - else if (newVal >= neg && oldVal < neg) - { - if (i == stick.x) digitalButton = stick.rawLeft; - else if (i == stick.y) digitalButton = stick.rawUp; - handleButtonUp(device, digitalButton); - } - - //pressed/released for digital RIGHT/DOWN - if (newVal > pos && oldVal <= pos) - { - if (i == stick.x) digitalButton = stick.rawRight; - else if (i == stick.y) digitalButton = stick.rawDown; - handleButtonDown(device, digitalButton); - } - else if (newVal <= pos && oldVal > pos) - { - if (i == stick.x) digitalButton = stick.rawRight; - else if (i == stick.y) digitalButton = stick.rawDown; - handleButtonUp(device, digitalButton); - } - - if (stick.mode == ONLY_DIGITAL) - { - //still haven't figured out how to suppress the analog inputs properly. Oh well. - } - } + gamepad.handleAxisMove(i, newAxis[i], (i >= 0 && i < oldAxis.length) ? oldAxis[i] : 0); } } diff --git a/flixel/input/gamepad/id/LogitechID.hx b/flixel/input/gamepad/id/LogitechID.hx index df38464713..b084d85e91 100644 --- a/flixel/input/gamepad/id/LogitechID.hx +++ b/flixel/input/gamepad/id/LogitechID.hx @@ -29,9 +29,6 @@ class LogitechID //TODO: Someone needs to look this up and define it! (NOTE: not all logitech controllers have this) public static inline var LOGITECH:Int = -1; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); - #else // native and html5 public static inline var ONE:Int = 0; public static inline var TWO:Int = 1; @@ -55,7 +52,9 @@ class LogitechID //TODO: Someone needs to look this up and define it! (NOTE: not all logitech controllers have this) public static inline var LOGITECH:Int = -5; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); #end + + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:24, down:25, left:26, right:27}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:28, down:29, left:30, right:31}); + } \ No newline at end of file diff --git a/flixel/input/gamepad/id/MFiID.hx b/flixel/input/gamepad/id/MFiID.hx index ea17dda6a3..d49ed0f966 100644 --- a/flixel/input/gamepad/id/MFiID.hx +++ b/flixel/input/gamepad/id/MFiID.hx @@ -25,8 +25,8 @@ class MFiID public static inline var DPAD_LEFT:Int = 19; public static inline var DPAD_RIGHT:Int = 20; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); + public static var LEFT_ANALOG_STICK (default, null) = new FlxGamepadAnalogStick(0, 1, {up:21, down:22, left:23, right:24}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:25, down:26, left:27, right:28}); public static inline var LEFT_TRIGGER:Int = 4; public static inline var RIGHT_TRIGGER:Int = 5; diff --git a/flixel/input/gamepad/id/MayflashWiiRemoteID.hx b/flixel/input/gamepad/id/MayflashWiiRemoteID.hx index 7d1608b051..82e32bab3f 100644 --- a/flixel/input/gamepad/id/MayflashWiiRemoteID.hx +++ b/flixel/input/gamepad/id/MayflashWiiRemoteID.hx @@ -81,16 +81,16 @@ class MayflashWiiRemoteID // Yes, the WiiRemote DPAD is treated as ANALOG for some reason...so we have to pass in some "fake" ID's to get simulated digital inputs public static var REMOTE_DPAD(default, null) = new FlxGamepadAnalogStick(0, 1, { - up: REMOTE_DPAD_UP, - down: REMOTE_DPAD_DOWN, - left: REMOTE_DPAD_LEFT, + up: REMOTE_DPAD_UP, + down: REMOTE_DPAD_DOWN, + left: REMOTE_DPAD_LEFT, right: REMOTE_DPAD_RIGHT, threshold: 0.5, mode: ONLY_DIGITAL }); - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); //the nunchuk only has the "left" analog stick - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); //the classic controller has both the "left" and "right" analog sticks + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:26, down:27, left:28, right:29}); //the nunchuk only has the "left" analog stick + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:30, down:31, left:32, right:33}); //the classic controller has both the "left" and "right" analog sticks // these aren't real axes, they're simulated when the right digital buttons are pushed public static inline var LEFT_TRIGGER_FAKE:Int = 4; @@ -166,16 +166,16 @@ class MayflashWiiRemoteID // Yes, the WiiRemote DPAD is treated as ANALOG for some reason...so we have to pass in some "fake" ID's to get simulated digital inputs public static var REMOTE_DPAD(default, null) = new FlxGamepadAnalogStick(0, 1, { - up: REMOTE_DPAD_UP, - down: REMOTE_DPAD_DOWN, - left: REMOTE_DPAD_LEFT, + up: REMOTE_DPAD_UP, + down: REMOTE_DPAD_DOWN, + left: REMOTE_DPAD_LEFT, right: REMOTE_DPAD_RIGHT, threshold: 0.5, mode: ONLY_DIGITAL }); - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); //the nunchuk only has the "left" analog stick - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); //the classic controller has both the "left" and "right" analog sticks + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:26, down:27, left:28, right:29}); //the nunchuk only has the "left" analog stick + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:26, down:27, left:28, right:29}); //the classic controller has both the "left" and "right" analog sticks // these aren't real axes, they're simulated when the right digital buttons are pushed public static inline var LEFT_TRIGGER_FAKE:Int = 4; diff --git a/flixel/input/gamepad/id/OUYAID.hx b/flixel/input/gamepad/id/OUYAID.hx index b2a378d428..ad2bbb69e9 100644 --- a/flixel/input/gamepad/id/OUYAID.hx +++ b/flixel/input/gamepad/id/OUYAID.hx @@ -26,8 +26,8 @@ class OUYAID public static inline var DPAD_UP:Int = 16; // If TRIGGER axis returns value > 0 then LT is being pressed, and if it's < 0 then RT is being pressed - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(11, 14); + public static var LEFT_ANALOG_STICK (default, null) = new FlxGamepadAnalogStick( 0, 1, {up:23, down:24, left:25, right:26}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(11, 14, {up:27, down:28, left:29, right:30}); public static inline var LEFT_TRIGGER_ANALOG:Int = 17; public static inline var RIGHT_TRIGGER_ANALOG:Int = 18; diff --git a/flixel/input/gamepad/id/PS4ID.hx b/flixel/input/gamepad/id/PS4ID.hx index 8b8e40c7df..f8c7b67529 100644 --- a/flixel/input/gamepad/id/PS4ID.hx +++ b/flixel/input/gamepad/id/PS4ID.hx @@ -37,8 +37,8 @@ class PS4ID public static inline var PS:Int = 22; public static inline var TOUCHPAD_CLICK:Int = 23; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0 , 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 5); + public static var LEFT_ANALOG_STICK (default, null) = new FlxGamepadAnalogStick(0, 1, {up:24, down:25, left:26, right:27}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 5, {up:28, down:29, left:30, right:31}); public static inline var DPAD_UP:Int = 6; public static inline var DPAD_DOWN:Int = 7; @@ -63,8 +63,8 @@ class PS4ID public static inline var TOUCHPAD_CLICK:Int = 21; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); + public static var LEFT_ANALOG_STICK (default, null) = new FlxGamepadAnalogStick(0, 1, {up:22, down:23, left:24, right:25}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:26, down:27, left:28, right:29}); public static inline var L2:Int = 4; public static inline var R2:Int = 5; @@ -97,8 +97,8 @@ class PS4ID public static inline var L2:Int = 3; public static inline var R2:Int = 4; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 5); + public static var LEFT_ANALOG_STICK (default, null) = new FlxGamepadAnalogStick(0, 1, {up:27, down:28, left:29, right:30}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 5, {up:31, down:32, left:33, right:34}); //"fake" IDs, we manually watch for hat axis changes and then send events using these otherwise unused joystick button codes public static inline var DPAD_LEFT:Int = 15; diff --git a/flixel/input/gamepad/id/PSVitaID.hx b/flixel/input/gamepad/id/PSVitaID.hx index 2d073cee8c..3e70d75c63 100644 --- a/flixel/input/gamepad/id/PSVitaID.hx +++ b/flixel/input/gamepad/id/PSVitaID.hx @@ -24,6 +24,6 @@ class PSVitaID public static inline var DPAD_LEFT:Int = 19; public static inline var DPAD_RIGHT:Int = 20; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); + public static var LEFT_ANALOG_STICK (default, null) = new FlxGamepadAnalogStick(0, 1, {up:21, down:22, left:23, right:24}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:21, down:22, left:23, right:24}); } \ No newline at end of file diff --git a/flixel/input/gamepad/id/WiiRemoteID.hx b/flixel/input/gamepad/id/WiiRemoteID.hx index 580e65f5f5..7913bdeeba 100644 --- a/flixel/input/gamepad/id/WiiRemoteID.hx +++ b/flixel/input/gamepad/id/WiiRemoteID.hx @@ -73,18 +73,18 @@ class WiiRemoteID // Yes, the WiiRemote DPAD is treated as ANALOG for some reason... // so we have to pass in some "fake" ID's to get simulated digital inputs public static var REMOTE_DPAD(default, null) = new FlxGamepadAnalogStick(0, 1, { - up: REMOTE_DPAD_UP, - down: REMOTE_DPAD_DOWN, - left: REMOTE_DPAD_LEFT, + up: REMOTE_DPAD_UP, + down: REMOTE_DPAD_DOWN, + left: REMOTE_DPAD_LEFT, right: REMOTE_DPAD_RIGHT, threshold: 0.5, mode: ONLY_DIGITAL }); // the nunchuk only has the "left" analog stick - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:32,down:33,left:34,right:35}); // the classic controller has both the "left" and "right" analog sticks - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:36,down:37,left:38,right:39}); // these aren't real axes, they're simulated when the right digital buttons are pushed public static inline var LEFT_TRIGGER_FAKE:Int = 4; @@ -167,22 +167,22 @@ class WiiRemoteID // Yes, the WiiRemote DPAD is treated as ANALOG for some reason...so we have to pass in some "fake" ID's to get simulated digital inputs public static var REMOTE_DPAD(default, null) = new FlxGamepadAnalogStick(0, 1, { - up: REMOTE_DPAD_UP, - down: REMOTE_DPAD_DOWN, - left: REMOTE_DPAD_LEFT, + up: REMOTE_DPAD_UP, + down: REMOTE_DPAD_DOWN, + left: REMOTE_DPAD_LEFT, right: REMOTE_DPAD_RIGHT, threshold: 0.5, - mode: ONLY_DIGITAL + mode: ONLY_DIGITAL }); /** * the nunchuk only has the "left" analog stick */ - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:28,down:29,left:30,right:31}); /** * the classic controller has both the "left" and "right" analog sticks */ - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:32,down:33,left:34,right:35}); // these aren't real axes, they're simulated when the right digital buttons are pushed public static inline var LEFT_TRIGGER_FAKE:Int = 4; diff --git a/flixel/input/gamepad/id/XInputID.hx b/flixel/input/gamepad/id/XInputID.hx index 5208e0479f..a4f6dc8c39 100644 --- a/flixel/input/gamepad/id/XInputID.hx +++ b/flixel/input/gamepad/id/XInputID.hx @@ -46,8 +46,8 @@ class XInputID public static inline var LEFT_TRIGGER:Int = 10; public static inline var RIGHT_TRIGGER:Int = 11; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:20,down:21,left:22,right:23}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:24,down:25,left:26,right:27}); #elseif FLX_GAMEINPUT_API @@ -71,8 +71,8 @@ class XInputID public static inline var DPAD_LEFT:Int = 19; public static inline var DPAD_RIGHT:Int = 20; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3); + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:21,down:22,left:23,right:24}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(2, 3, {up:25,down:26,left:27,right:28}); public static inline var LEFT_TRIGGER:Int = 4; public static inline var RIGHT_TRIGGER:Int = 5; @@ -116,8 +116,8 @@ class XInputID public static inline var LEFT_TRIGGER:Int = 2; public static inline var RIGHT_TRIGGER:Int = 5; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(3, 4); + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:21,down:22,left:23,right:24}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(3, 4, {up:25,down:26,left:27,right:28}); #else // mac @@ -145,8 +145,8 @@ class XInputID public static inline var LEFT_TRIGGER:Int = 2; public static inline var RIGHT_TRIGGER:Int = 5; - public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1); - public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(3, 4); + public static var LEFT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(0, 1, {up:21,down:22,left:23,right:24}); + public static var RIGHT_ANALOG_STICK(default, null) = new FlxGamepadAnalogStick(3, 4, {up:25,down:26,left:27,right:28}); #end #end diff --git a/flixel/input/gamepad/mappings/LogitechMapping.hx b/flixel/input/gamepad/mappings/LogitechMapping.hx index 6289dd4d17..e079fd954c 100644 --- a/flixel/input/gamepad/mappings/LogitechMapping.hx +++ b/flixel/input/gamepad/mappings/LogitechMapping.hx @@ -41,7 +41,16 @@ class LogitechMapping extends FlxGamepadMapping case LogitechID.DPAD_RIGHT: DPAD_RIGHT; case LogitechID.DPAD_UP: DPAD_UP; case LogitechID.LOGITECH: GUIDE; - default: NONE; + default: + if (rawID == LogitechID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == LogitechID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == LogitechID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == LogitechID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == LogitechID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == LogitechID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == LogitechID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == LogitechID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -66,6 +75,14 @@ class LogitechMapping extends FlxGamepadMapping case DPAD_RIGHT: LogitechID.DPAD_RIGHT; case LEFT_TRIGGER: LogitechID.SEVEN; case RIGHT_TRIGGER: LogitechID.EIGHT; + case LEFT_STICK_DIGITAL_UP: LogitechID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: LogitechID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: LogitechID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: LogitechID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: LogitechID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: LogitechID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: LogitechID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: LogitechID.RIGHT_ANALOG_STICK.rawRight; #if FLX_JOYSTICK_API case LEFT_TRIGGER_FAKE: LogitechID.SEVEN; case RIGHT_TRIGGER_FAKE: LogitechID.EIGHT; diff --git a/flixel/input/gamepad/mappings/MFiMapping.hx b/flixel/input/gamepad/mappings/MFiMapping.hx index a1aeb54a7c..94ecb7c5c5 100644 --- a/flixel/input/gamepad/mappings/MFiMapping.hx +++ b/flixel/input/gamepad/mappings/MFiMapping.hx @@ -31,7 +31,16 @@ class MFiMapping extends FlxGamepadMapping case MFiID.DPAD_DOWN: DPAD_DOWN; case MFiID.DPAD_LEFT: DPAD_LEFT; case MFiID.DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if (rawID == MFiID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == MFiID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == MFiID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == MFiID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == MFiID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == MFiID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == MFiID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == MFiID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -56,6 +65,14 @@ class MFiMapping extends FlxGamepadMapping case DPAD_RIGHT: MFiID.DPAD_RIGHT; case LEFT_TRIGGER: MFiID.LEFT_TRIGGER; case RIGHT_TRIGGER: MFiID.RIGHT_TRIGGER; + case LEFT_STICK_DIGITAL_UP: MFiID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: MFiID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: MFiID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: MFiID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: MFiID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: MFiID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: MFiID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: MFiID.RIGHT_ANALOG_STICK.rawRight; #if FLX_JOYSTICK_API case LEFT_TRIGGER_FAKE: MFiID.LEFT_TRIGGER; case RIGHT_TRIGGER_FAKE: MFiID.RIGHT_TRIGGER; diff --git a/flixel/input/gamepad/mappings/MayflashWiiRemoteMapping.hx b/flixel/input/gamepad/mappings/MayflashWiiRemoteMapping.hx index 549830f8d9..785a1bb07b 100644 --- a/flixel/input/gamepad/mappings/MayflashWiiRemoteMapping.hx +++ b/flixel/input/gamepad/mappings/MayflashWiiRemoteMapping.hx @@ -52,7 +52,16 @@ class MayflashWiiRemoteMapping extends FlxGamepadMapping case MayflashWiiRemoteID.CLASSIC_DPAD_DOWN: DPAD_DOWN; case MayflashWiiRemoteID.CLASSIC_DPAD_LEFT: DPAD_LEFT; case MayflashWiiRemoteID.CLASSIC_DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -73,7 +82,12 @@ class MayflashWiiRemoteMapping extends FlxGamepadMapping case MayflashWiiRemoteID.NUNCHUK_DPAD_DOWN: DPAD_DOWN; case MayflashWiiRemoteID.NUNCHUK_DPAD_LEFT: DPAD_LEFT; case MayflashWiiRemoteID.NUNCHUK_DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -127,6 +141,14 @@ class MayflashWiiRemoteMapping extends FlxGamepadMapping case RIGHT_TRIGGER: MayflashWiiRemoteID.CLASSIC_R; case EXTRA_0: MayflashWiiRemoteID.CLASSIC_ONE; case EXTRA_1: MayflashWiiRemoteID.CLASSIC_TWO; + case LEFT_STICK_DIGITAL_UP: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: MayflashWiiRemoteID.RIGHT_ANALOG_STICK.rawRight; default: getRawDefault(ID); } } @@ -150,6 +172,10 @@ class MayflashWiiRemoteMapping extends FlxGamepadMapping case DPAD_RIGHT: MayflashWiiRemoteID.NUNCHUK_DPAD_RIGHT; case POINTER_X: MayflashWiiRemoteID.NUNCHUK_POINTER_X; case POINTER_Y: MayflashWiiRemoteID.NUNCHUK_POINTER_Y; + case LEFT_STICK_DIGITAL_UP: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: MayflashWiiRemoteID.LEFT_ANALOG_STICK.rawRight; default: -1; } } diff --git a/flixel/input/gamepad/mappings/OUYAMapping.hx b/flixel/input/gamepad/mappings/OUYAMapping.hx index 9e783c3e58..a23ac4d2a6 100644 --- a/flixel/input/gamepad/mappings/OUYAMapping.hx +++ b/flixel/input/gamepad/mappings/OUYAMapping.hx @@ -39,7 +39,16 @@ class OUYAMapping extends FlxGamepadMapping case OUYAID.DPAD_DOWN: DPAD_DOWN; case OUYAID.DPAD_LEFT: DPAD_LEFT; case OUYAID.DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if (rawID == OUYAID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == OUYAID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == OUYAID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == OUYAID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == OUYAID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == OUYAID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == OUYAID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == OUYAID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -62,6 +71,14 @@ class OUYAMapping extends FlxGamepadMapping case DPAD_RIGHT: OUYAID.DPAD_RIGHT; case LEFT_TRIGGER: OUYAID.LEFT_TRIGGER; case RIGHT_TRIGGER: OUYAID.RIGHT_TRIGGER; + case LEFT_STICK_DIGITAL_UP: OUYAID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: OUYAID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: OUYAID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: OUYAID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: OUYAID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: OUYAID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: OUYAID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: OUYAID.RIGHT_ANALOG_STICK.rawRight; default: -1; } } diff --git a/flixel/input/gamepad/mappings/PS4Mapping.hx b/flixel/input/gamepad/mappings/PS4Mapping.hx index cf42564049..96bf290d0f 100644 --- a/flixel/input/gamepad/mappings/PS4Mapping.hx +++ b/flixel/input/gamepad/mappings/PS4Mapping.hx @@ -42,7 +42,16 @@ class PS4Mapping extends FlxGamepadMapping case PS4ID.DPAD_UP: DPAD_UP; case PS4ID.DPAD_LEFT: DPAD_LEFT; case PS4ID.DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if (rawID == PS4ID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == PS4ID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == PS4ID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == PS4ID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == PS4ID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == PS4ID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == PS4ID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == PS4ID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -67,6 +76,14 @@ class PS4Mapping extends FlxGamepadMapping case DPAD_RIGHT: PS4ID.DPAD_RIGHT; case LEFT_TRIGGER: PS4ID.L2; case RIGHT_TRIGGER: PS4ID.R2; + case LEFT_STICK_DIGITAL_UP: PS4ID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: PS4ID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: PS4ID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: PS4ID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: PS4ID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: PS4ID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: PS4ID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: PS4ID.RIGHT_ANALOG_STICK.rawRight; #if FLX_JOYSTICK_API case LEFT_TRIGGER_FAKE: LEFT_TRIGGER_FAKE; case RIGHT_TRIGGER_FAKE: RIGHT_TRIGGER_FAKE; diff --git a/flixel/input/gamepad/mappings/PSVitaMapping.hx b/flixel/input/gamepad/mappings/PSVitaMapping.hx index b9ef74fa2d..d53ca8df13 100644 --- a/flixel/input/gamepad/mappings/PSVitaMapping.hx +++ b/flixel/input/gamepad/mappings/PSVitaMapping.hx @@ -28,7 +28,16 @@ class PSVitaMapping extends FlxGamepadMapping case PSVitaID.DPAD_UP: DPAD_UP; case PSVitaID.DPAD_LEFT: DPAD_LEFT; case PSVitaID.DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if (rawID == PSVitaID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == PSVitaID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == PSVitaID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == PSVitaID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == PSVitaID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == PSVitaID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == PSVitaID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == PSVitaID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -48,6 +57,14 @@ class PSVitaMapping extends FlxGamepadMapping case DPAD_DOWN: PSVitaID.DPAD_DOWN; case DPAD_LEFT: PSVitaID.DPAD_LEFT; case DPAD_RIGHT: PSVitaID.DPAD_RIGHT; + case LEFT_STICK_DIGITAL_UP: PSVitaID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: PSVitaID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: PSVitaID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: PSVitaID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: PSVitaID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: PSVitaID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: PSVitaID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: PSVitaID.RIGHT_ANALOG_STICK.rawRight; default: -1; } } diff --git a/flixel/input/gamepad/mappings/WiiRemoteMapping.hx b/flixel/input/gamepad/mappings/WiiRemoteMapping.hx index 98c76e33dc..36f9622172 100644 --- a/flixel/input/gamepad/mappings/WiiRemoteMapping.hx +++ b/flixel/input/gamepad/mappings/WiiRemoteMapping.hx @@ -52,7 +52,16 @@ class WiiRemoteMapping extends FlxGamepadMapping case WiiRemoteID.CLASSIC_DPAD_RIGHT: DPAD_RIGHT; case WiiRemoteID.CLASSIC_ONE: EXTRA_0; case WiiRemoteID.CLASSIC_TWO: EXTRA_1; - default: NONE; + default: + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == WiiRemoteID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -73,7 +82,12 @@ class WiiRemoteMapping extends FlxGamepadMapping case WiiRemoteID.NUNCHUK_DPAD_DOWN: DPAD_DOWN; case WiiRemoteID.NUNCHUK_DPAD_LEFT: DPAD_LEFT; case WiiRemoteID.NUNCHUK_DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == WiiRemoteID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -127,6 +141,14 @@ class WiiRemoteMapping extends FlxGamepadMapping case RIGHT_TRIGGER: WiiRemoteID.CLASSIC_R; case EXTRA_0: WiiRemoteID.CLASSIC_ONE; case EXTRA_1: WiiRemoteID.CLASSIC_TWO; + case LEFT_STICK_DIGITAL_UP: WiiRemoteID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: WiiRemoteID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: WiiRemoteID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: WiiRemoteID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: WiiRemoteID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: WiiRemoteID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: WiiRemoteID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: WiiRemoteID.RIGHT_ANALOG_STICK.rawRight; default: -1; } } @@ -150,6 +172,10 @@ class WiiRemoteMapping extends FlxGamepadMapping case DPAD_RIGHT: WiiRemoteID.NUNCHUK_DPAD_RIGHT; case TILT_PITCH: WiiRemoteID.NUNCHUK_TILT_PITCH; case TILT_ROLL: WiiRemoteID.NUNCHUK_TILT_ROLL; + case LEFT_STICK_DIGITAL_UP: WiiRemoteID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: WiiRemoteID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: WiiRemoteID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: WiiRemoteID.LEFT_ANALOG_STICK.rawRight; default: -1; } } diff --git a/flixel/input/gamepad/mappings/XInputMapping.hx b/flixel/input/gamepad/mappings/XInputMapping.hx index 95dd3f6739..09c1ee775b 100644 --- a/flixel/input/gamepad/mappings/XInputMapping.hx +++ b/flixel/input/gamepad/mappings/XInputMapping.hx @@ -49,7 +49,16 @@ class XInputMapping extends FlxGamepadMapping case XInputID.DPAD_DOWN: DPAD_DOWN; case XInputID.DPAD_LEFT: DPAD_LEFT; case XInputID.DPAD_RIGHT: DPAD_RIGHT; - default: NONE; + default: + if (rawID == XInputID.LEFT_ANALOG_STICK.rawUp) LEFT_STICK_DIGITAL_UP; + if (rawID == XInputID.LEFT_ANALOG_STICK.rawDown) LEFT_STICK_DIGITAL_DOWN; + if (rawID == XInputID.LEFT_ANALOG_STICK.rawLeft) LEFT_STICK_DIGITAL_LEFT; + if (rawID == XInputID.LEFT_ANALOG_STICK.rawRight) LEFT_STICK_DIGITAL_RIGHT; + if (rawID == XInputID.RIGHT_ANALOG_STICK.rawUp) RIGHT_STICK_DIGITAL_UP; + if (rawID == XInputID.RIGHT_ANALOG_STICK.rawDown) RIGHT_STICK_DIGITAL_DOWN; + if (rawID == XInputID.RIGHT_ANALOG_STICK.rawLeft) RIGHT_STICK_DIGITAL_LEFT; + if (rawID == XInputID.RIGHT_ANALOG_STICK.rawRight) RIGHT_STICK_DIGITAL_RIGHT; + NONE; } } @@ -78,6 +87,14 @@ class XInputMapping extends FlxGamepadMapping case LEFT_TRIGGER_FAKE: LEFT_TRIGGER_FAKE; case RIGHT_TRIGGER_FAKE: RIGHT_TRIGGER_FAKE; #end + case LEFT_STICK_DIGITAL_UP: XInputID.LEFT_ANALOG_STICK.rawUp; + case LEFT_STICK_DIGITAL_DOWN: XInputID.LEFT_ANALOG_STICK.rawDown; + case LEFT_STICK_DIGITAL_LEFT: XInputID.LEFT_ANALOG_STICK.rawLeft; + case LEFT_STICK_DIGITAL_RIGHT: XInputID.LEFT_ANALOG_STICK.rawRight; + case RIGHT_STICK_DIGITAL_UP: XInputID.RIGHT_ANALOG_STICK.rawUp; + case RIGHT_STICK_DIGITAL_DOWN: XInputID.RIGHT_ANALOG_STICK.rawDown; + case RIGHT_STICK_DIGITAL_LEFT: XInputID.RIGHT_ANALOG_STICK.rawLeft; + case RIGHT_STICK_DIGITAL_RIGHT: XInputID.RIGHT_ANALOG_STICK.rawRight; default: -1; } }