public static IInputDevice GetInputDevice(PlayerController playerController) { Initialize(); var playerControllerHash = playerController.GetInstanceID(); if (!_playerControllers.Contains(playerController)) { _playerControllers.Add(playerController); } foreach (var inputDevice in _inputDevices) { if (_controllerMapping.Any(cm => cm.controlledId == inputDevice.GetHashCode())) { continue; } var controllerDevice = new ControllerDevice(inputDevice); ConnectDeviceToPlayer(playerController, controllerDevice, inputDevice.GetHashCode()); return(controllerDevice); } if (_keyboardDetected && _controllerMapping.All(pcm => pcm.controlledId != 0)) { var keyboardDevice = new KeyboardDevice(); ConnectDeviceToPlayer(playerController, keyboardDevice, KeyboardHash); return(keyboardDevice); } Debug.Log("No free controller for player: " + playerControllerHash); return(null); }
public static void ControllerPluggedEvent(int deviceHash) { _inputDevices = InputManager.Devices.ToList(); Initialize(); if (IsControllerAlreadyConnectedToPlayer(deviceHash)) { return; } var inputDevice = _inputDevices.First(i => i.GetHashCode() == deviceHash); var controllerDevice = new ControllerDevice(inputDevice); TryConnectionToPlayer(deviceHash, controllerDevice); }