mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2025-07-19 19:13:03 +00:00
When combining analog inputs, use the one with the highest magnitude
This commit is contained in:
parent
019dc6d45f
commit
48ba812cf6
@ -400,6 +400,28 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD
|
|||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private byte maxByMagnitude(byte a, byte b) {
|
||||||
|
int absA = Math.abs(a);
|
||||||
|
int absB = Math.abs(b);
|
||||||
|
if (absA > absB) {
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private short maxByMagnitude(short a, short b) {
|
||||||
|
int absA = Math.abs(a);
|
||||||
|
int absB = Math.abs(b);
|
||||||
|
if (absA > absB) {
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void sendControllerInputPacket(GenericControllerContext originalContext) {
|
private void sendControllerInputPacket(GenericControllerContext originalContext) {
|
||||||
assignControllerNumberIfNeeded(originalContext);
|
assignControllerNumberIfNeeded(originalContext);
|
||||||
|
|
||||||
@ -420,34 +442,34 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD
|
|||||||
GenericControllerContext context = inputDeviceContexts.valueAt(i);
|
GenericControllerContext context = inputDeviceContexts.valueAt(i);
|
||||||
if (context.assignedControllerNumber && context.controllerNumber == controllerNumber) {
|
if (context.assignedControllerNumber && context.controllerNumber == controllerNumber) {
|
||||||
inputMap |= context.inputMap;
|
inputMap |= context.inputMap;
|
||||||
leftTrigger |= context.leftTrigger;
|
leftTrigger |= maxByMagnitude(leftTrigger, context.leftTrigger);
|
||||||
rightTrigger |= context.rightTrigger;
|
rightTrigger |= maxByMagnitude(rightTrigger, context.rightTrigger);
|
||||||
leftStickX |= context.leftStickX;
|
leftStickX |= maxByMagnitude(leftStickX, context.leftStickX);
|
||||||
leftStickY |= context.leftStickY;
|
leftStickY |= maxByMagnitude(leftStickY, context.leftStickY);
|
||||||
rightStickX |= context.rightStickX;
|
rightStickX |= maxByMagnitude(rightStickX, context.rightStickX);
|
||||||
rightStickY |= context.rightStickY;
|
rightStickY |= maxByMagnitude(rightStickY, context.rightStickY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (int i = 0; i < usbDeviceContexts.size(); i++) {
|
for (int i = 0; i < usbDeviceContexts.size(); i++) {
|
||||||
GenericControllerContext context = usbDeviceContexts.valueAt(i);
|
GenericControllerContext context = usbDeviceContexts.valueAt(i);
|
||||||
if (context.assignedControllerNumber && context.controllerNumber == controllerNumber) {
|
if (context.assignedControllerNumber && context.controllerNumber == controllerNumber) {
|
||||||
inputMap |= context.inputMap;
|
inputMap |= context.inputMap;
|
||||||
leftTrigger |= context.leftTrigger;
|
leftTrigger |= maxByMagnitude(leftTrigger, context.leftTrigger);
|
||||||
rightTrigger |= context.rightTrigger;
|
rightTrigger |= maxByMagnitude(rightTrigger, context.rightTrigger);
|
||||||
leftStickX |= context.leftStickX;
|
leftStickX |= maxByMagnitude(leftStickX, context.leftStickX);
|
||||||
leftStickY |= context.leftStickY;
|
leftStickY |= maxByMagnitude(leftStickY, context.leftStickY);
|
||||||
rightStickX |= context.rightStickX;
|
rightStickX |= maxByMagnitude(rightStickX, context.rightStickX);
|
||||||
rightStickY |= context.rightStickY;
|
rightStickY |= maxByMagnitude(rightStickY, context.rightStickY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (defaultContext.controllerNumber == controllerNumber) {
|
if (defaultContext.controllerNumber == controllerNumber) {
|
||||||
inputMap |= defaultContext.inputMap;
|
inputMap |= defaultContext.inputMap;
|
||||||
leftTrigger |= defaultContext.leftTrigger;
|
leftTrigger |= maxByMagnitude(leftTrigger, defaultContext.leftTrigger);
|
||||||
rightTrigger |= defaultContext.rightTrigger;
|
rightTrigger |= maxByMagnitude(rightTrigger, defaultContext.rightTrigger);
|
||||||
leftStickX |= defaultContext.leftStickX;
|
leftStickX |= maxByMagnitude(leftStickX, defaultContext.leftStickX);
|
||||||
leftStickY |= defaultContext.leftStickY;
|
leftStickY |= maxByMagnitude(leftStickY, defaultContext.leftStickY);
|
||||||
rightStickX |= defaultContext.rightStickX;
|
rightStickX |= maxByMagnitude(rightStickX, defaultContext.rightStickX);
|
||||||
rightStickY |= defaultContext.rightStickY;
|
rightStickY |= maxByMagnitude(rightStickY, defaultContext.rightStickY);
|
||||||
}
|
}
|
||||||
|
|
||||||
conn.sendControllerInput(controllerNumber, inputMap,
|
conn.sendControllerInput(controllerNumber, inputMap,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user