Example #1
0
        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);
        }
Example #2
0
        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);
        }