private void HandleJoyStickDisconnected(int joystickInstanceId) { if (_gamepadsInstanceIdsMapping.TryGetValue(joystickInstanceId, out string id)) { _gamepadsInstanceIdsMapping.Remove(joystickInstanceId); _gamepadsIds.Remove(id); OnGamepadDisconnected?.Invoke(id); } }
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(); } }
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(); } }