public GamepadState(GamepadThumbsticks thumbSticksState, GamePadTriggers triggersState, GamepadButton buttonsState) : this() { Thumbsticks = thumbSticksState; Triggers = triggersState; ButtonsState = buttonsState; }
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); }
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)); }