private void FindControllers() { if (controller != null) { // If we already have a controller, skip the search return; } int playerIndex = -1; if (XInputInterface.IsGamePadConnected(GamePad.PLAYER_INDEX_ONE)) { playerIndex = (int)GamePad.PLAYER_INDEX_ONE; } else if (XInputInterface.IsGamePadConnected(GamePad.PLAYER_INDEX_TWO)) { playerIndex = (int)GamePad.PLAYER_INDEX_TWO; } else if (XInputInterface.IsGamePadConnected(GamePad.PLAYER_INDEX_THREE)) { playerIndex = (int)GamePad.PLAYER_INDEX_THREE; } else if (XInputInterface.IsGamePadConnected(GamePad.PLAYER_INDEX_FOUR)) { playerIndex = (int)GamePad.PLAYER_INDEX_FOUR; } if (playerIndex != -1) { Console.WriteLine($"XInput controller found: {playerIndex}"); controller = new XInputController((uint)playerIndex); OnDeviceConnectionStateChanged(controller, true); } }
private void OnDeviceConnectionStateChanged(XInputController controller, bool isConnected) { DeviceConnectionStateChangedEventArgs args = new DeviceConnectionStateChangedEventArgs(); args.Controller = controller; args.IsConnected = isConnected; DeviceConnectionStateChanged?.Invoke(this, args); }
private void PurgeInactiveControllers() { if (controller == null) { return; } if (!controller.IsConnected) { OnDeviceConnectionStateChanged(controller, false); controller = null; } }