public override void Update(List <InputEvent> inputEvents) { if (SDL.SDL_JoystickGetAttached(joystick) == SDL.SDL_bool.SDL_FALSE) { Dispose(); return; } for (int i = 0; i < buttonInfos.Count; i++) { HandleButton(i, SDL.SDL_JoystickGetButton(joystick, i) != 0); } for (int i = 0; i < axisInfos.Count; i++) { short input = SDL.SDL_JoystickGetAxis(joystick, i); float axis = (float)input / 0x7FFF; HandleAxis(i, axis); } for (int i = 0; i < povControllerInfos.Count; i++) { var hat = SDL.SDL_JoystickGetHat(joystick, i); GamePadButton buttons; bool hatEnabled = ConvertJoystickHat(hat, out buttons); HandleDirection(i, hatEnabled ? GameControllerUtils.ButtonsToDirection(buttons) : Direction.None); } base.Update(inputEvents); }