Exemplo n.º 1
0
        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);
        }