diff --git a/app/src/main/java/com/limelight/Game.java b/app/src/main/java/com/limelight/Game.java index b13673b4..9c96eec7 100644 --- a/app/src/main/java/com/limelight/Game.java +++ b/app/src/main/java/com/limelight/Game.java @@ -425,7 +425,7 @@ public class Game extends Activity implements SurfaceHolder.Callback, if (prefConfig.onscreenController) { // create virtual onscreen controller - virtualController = new VirtualController(conn, + virtualController = new VirtualController(controllerHandler, (FrameLayout)streamView.getParent(), this); virtualController.refreshLayout(); diff --git a/app/src/main/java/com/limelight/binding/input/ControllerHandler.java b/app/src/main/java/com/limelight/binding/input/ControllerHandler.java index 17d88ef1..b8a20829 100644 --- a/app/src/main/java/com/limelight/binding/input/ControllerHandler.java +++ b/app/src/main/java/com/limelight/binding/input/ControllerHandler.java @@ -1323,12 +1323,30 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD return true; } + public void reportOscState(short buttonFlags, + short leftStickX, short leftStickY, + short rightStickX, short rightStickY, + byte leftTrigger, byte rightTrigger) { + defaultContext.leftStickX = leftStickX; + defaultContext.leftStickY = leftStickY; + + defaultContext.rightStickX = rightStickX; + defaultContext.rightStickY = rightStickY; + + defaultContext.leftTrigger = leftTrigger; + defaultContext.rightTrigger = rightTrigger; + + defaultContext.inputMap = buttonFlags; + + sendControllerInputPacket(defaultContext); + } + @Override public void reportControllerState(int controllerId, short buttonFlags, float leftStickX, float leftStickY, float rightStickX, float rightStickY, float leftTrigger, float rightTrigger) { - UsbDeviceContext context = usbDeviceContexts.get(controllerId); + GenericControllerContext context = usbDeviceContexts.get(controllerId); if (context == null) { return; } diff --git a/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualController.java b/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualController.java index 3d166a0d..2dbb070e 100644 --- a/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualController.java +++ b/app/src/main/java/com/limelight/binding/input/virtual_controller/VirtualController.java @@ -13,6 +13,7 @@ import android.widget.RelativeLayout; import android.widget.Toast; import com.limelight.R; +import com.limelight.binding.input.ControllerHandler; import com.limelight.nvstream.NvConnection; import java.util.ArrayList; @@ -38,7 +39,7 @@ public class VirtualController { private static final boolean _PRINT_DEBUG_INFORMATION = false; - private NvConnection connection = null; + private ControllerHandler controllerHandler; private Context context = null; private FrameLayout frame_layout = null; @@ -53,8 +54,8 @@ public class VirtualController { private List elements = new ArrayList<>(); - public VirtualController(final NvConnection conn, FrameLayout layout, final Context context) { - this.connection = conn; + public VirtualController(final ControllerHandler controllerHandler, FrameLayout layout, final Context context) { + this.controllerHandler = controllerHandler; this.frame_layout = layout; this.context = context; @@ -173,15 +174,15 @@ public class VirtualController { _DBG("LEFT STICK X: " + inputContext.leftStickX + " Y: " + inputContext.leftStickY); _DBG("RIGHT STICK X: " + inputContext.rightStickX + " Y: " + inputContext.rightStickY); - if (connection != null) { - connection.sendControllerInput( + if (controllerHandler != null) { + controllerHandler.reportOscState( inputContext.inputMap, - inputContext.leftTrigger, - inputContext.rightTrigger, inputContext.leftStickX, inputContext.leftStickY, inputContext.rightStickX, - inputContext.rightStickY + inputContext.rightStickY, + inputContext.leftTrigger, + inputContext.rightTrigger ); } }