예제 #1
0
 public GamepadState(GamepadThumbsticks thumbSticksState, GamePadTriggers triggersState, GamepadButton buttonsState)
     : this()
 {
     Thumbsticks  = thumbSticksState;
     Triggers     = triggersState;
     ButtonsState = buttonsState;
 }
예제 #2
0
        public override ref readonly GamepadState GetGamepadState()
        {
            if (gamepad_device == null)
            {
                return(ref GamepadState.Default);
            }

            var device = gamepad_device.Device;

            var thumbsticks_state = new GamepadThumbsticks(
                new Vector2(
                    NormalizeAxisValue(SDL.SDL_GameControllerGetAxis(device,
                                                                     SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTX)),
                    NormalizeAxisValue(SDL.SDL_GameControllerGetAxis(device,
                                                                     SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTY))
                    ),
                new Vector2(
                    NormalizeAxisValue(SDL.SDL_GameControllerGetAxis(device,
                                                                     SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTX)),
                    NormalizeAxisValue(SDL.SDL_GameControllerGetAxis(device,
                                                                     SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTY))
                    ),
                GamepadDeadZoneMode
                );

            var triggers_state = new GamePadTriggers(
                NormalizeAxisValue(SDL.SDL_GameControllerGetAxis(device,
                                                                 SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERLEFT)),
                NormalizeAxisValue(SDL.SDL_GameControllerGetAxis(device,
                                                                 SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERRIGHT))
                );

            var buttons_state = gamepad_device.State.ButtonsState =
                (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_A) == 1
                    ? GamepadButton.A
                    : 0) |
                (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_B) == 1
                    ? GamepadButton.B
                    : 0) |
                (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_BACK) == 1
                    ? GamepadButton.Back
                    : 0) |
                (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_GUIDE) == 1
                    ? GamepadButton.BigButton
                    : 0) |
                (SDL.SDL_GameControllerGetButton(device,
                                                 SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSHOULDER) == 1
                    ? GamepadButton.LeftShoulder
                    : 0) |
                (SDL.SDL_GameControllerGetButton(device,
                                                 SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) == 1
                    ? GamepadButton.RightShoulder
                    : 0) |
                (SDL.SDL_GameControllerGetButton(device,
                                                 SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSTICK) ==
                 1
                    ? GamepadButton.LeftStick
                    : 0) |
                (SDL.SDL_GameControllerGetButton(device,
                                                 SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSTICK) ==
                 1
                    ? GamepadButton.RightStick
                    : 0) |
                (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_START) == 1
                    ? GamepadButton.Start
                    : 0) |
                (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_X) == 1
                    ? GamepadButton.X
                    : 0) |
                (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_Y) == 1
                    ? GamepadButton.Y
                    : 0) |
                (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_UP) ==
                 1
                    ? GamepadButton.DPadUp
                    : 0) |
                (SDL.SDL_GameControllerGetButton(device,
                                                 SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_DOWN) == 1
                    ? GamepadButton.DPadDown
                    : 0) |
                (SDL.SDL_GameControllerGetButton(device,
                                                 SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_LEFT) == 1
                    ? GamepadButton.DPadLeft
                    : 0) |
                (SDL.SDL_GameControllerGetButton(device,
                                                 SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_RIGHT) == 1
                    ? GamepadButton.DPadRight
                    : 0) |
                (triggers_state.Left > 0f ? GamepadButton.LeftTrigger : 0) |
                (triggers_state.Right > 0f ? GamepadButton.RightTrigger : 0);


            gamepad_state.ButtonsState = buttons_state;
            gamepad_state.Thumbsticks  = thumbsticks_state;
            gamepad_state.Triggers     = triggers_state;

            return(ref gamepad_state);
        }
예제 #3
0
        public static GamepadState GetGamepadState(int index)
        {
            if (!_gamepads.ContainsKey(index))
            {
                return(GamepadState.Default);
            }

            var gamepad = _gamepads[index];

            var device = gamepad.Device;

            var thumbsticksState = new GamepadThumbsticks(

                new Vector2(
                    NormalizeAxisValue(SDL.SDL_GameControllerGetAxis(device,
                                                                     SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTX)),
                    NormalizeAxisValue(SDL.SDL_GameControllerGetAxis(device,
                                                                     SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTY))
                    ),

                new Vector2(
                    NormalizeAxisValue(SDL.SDL_GameControllerGetAxis(device,
                                                                     SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTX)),
                    NormalizeAxisValue(SDL.SDL_GameControllerGetAxis(device,
                                                                     SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTY))
                    ),

                GamepadDeadzoneMode
                );

            var triggersState = new GamePadTriggers(
                NormalizeAxisValue(SDL.SDL_GameControllerGetAxis(device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERLEFT)),
                NormalizeAxisValue(SDL.SDL_GameControllerGetAxis(device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERRIGHT))
                );

            var buttonsState = gamepad.State.ButtonsState =
                ((SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_A) == 1)
                    ? GamepadButton.A
                    : 0) |
                ((SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_B) == 1)
                    ? GamepadButton.B
                    : 0) |
                ((SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_BACK) == 1)
                    ? GamepadButton.Back
                    : 0) |
                ((SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_GUIDE) == 1)
                    ? GamepadButton.BigButton
                    : 0) |
                ((SDL.SDL_GameControllerGetButton(device,
                                                  SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSHOULDER) == 1)
                    ? GamepadButton.LeftShoulder
                    : 0) |
                ((SDL.SDL_GameControllerGetButton(device,
                                                  SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) == 1)
                    ? GamepadButton.RightShoulder
                    : 0) |
                ((SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSTICK) ==
                  1)
                    ? GamepadButton.LeftStick
                    : 0) |
                ((SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSTICK) ==
                  1)
                    ? GamepadButton.RightStick
                    : 0) |
                ((SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_START) == 1)
                    ? GamepadButton.Start
                    : 0) |
                ((SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_X) == 1)
                    ? GamepadButton.X
                    : 0) |
                ((SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_Y) == 1)
                    ? GamepadButton.Y
                    : 0) |
                ((SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_UP) == 1)
                    ? GamepadButton.DPadUp
                    : 0) |
                ((SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_DOWN) == 1)
                    ? GamepadButton.DPadDown
                    : 0) |
                ((SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_LEFT) == 1)
                    ? GamepadButton.DPadLeft
                    : 0) |
                ((SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_RIGHT) == 1)
                    ? GamepadButton.DPadRight
                    : 0) |
                ((triggersState.Left > 0f) ? GamepadButton.LeftTrigger : 0) |
                ((triggersState.Right > 0f) ? GamepadButton.RightTrigger : 0);



            return(new GamepadState(thumbsticksState, triggersState, buttonsState));
        }