Пример #1
0
        private void HandleJoyStickDisconnected(int joystickInstanceId)
        {
            if (_gamepadsInstanceIdsMapping.TryGetValue(joystickInstanceId, out string id))
            {
                _gamepadsInstanceIdsMapping.Remove(joystickInstanceId);
                _gamepadsIds.Remove(id);

                OnGamepadDisconnected?.Invoke(id);
            }
        }
Пример #2
0
        public void OnGamepadDisconnectedHandler(GamepadEventDTO eventDTO)
        {
            var gamepad = _gamepads.Find(g => g.Index == eventDTO.gamepad.index);

            if (gamepad != null)
            {
                var ev = new GamepadEvent(gamepad);

                gamepad.Connected = false;
                _gamepads.Remove(gamepad);

                OnGamepadDisconnected?.Invoke(ev);
                OnUpdate?.Invoke();
            }
        }
Пример #3
0
        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                SDL2Driver.Instance.OnJoyStickConnected    -= HandleJoyStickConnected;
                SDL2Driver.Instance.OnJoystickDisconnected -= HandleJoyStickDisconnected;

                // Simulate a full disconnect when disposing
                foreach (string id in _gamepadsIds)
                {
                    OnGamepadDisconnected?.Invoke(id);
                }

                _gamepadsIds.Clear();

                SDL2Driver.Instance.Dispose();
            }
        }