static GamePadState ReadState(PlayerIndex index, GamePadDeadZone deadZone) { const float DeadZoneSize = 0.27f; IntPtr device = GetDevice(index); PadConfig c = GetConfig(index); if (device == IntPtr.Zero || c == null) { return(GamePadState.InitializedState); } var leftStick = c.LeftStick.ReadAxisPair(device); var rightStick = c.RightStick.ReadAxisPair(device); GamePadThumbSticks sticks = new GamePadThumbSticks(new Vector2(leftStick.X, leftStick.Y), new Vector2(rightStick.X, rightStick.Y)); sticks.ApplyDeadZone(deadZone, DeadZoneSize); GamePadTriggers triggers = new GamePadTriggers(c.LeftTrigger.ReadFloat(device), c.RightTrigger.ReadFloat(device)); Buttons buttonState = ReadButtons(device, c, DeadZoneSize); buttonState |= StickToButtons(sticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, DeadZoneSize); buttonState |= StickToButtons(sticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, DeadZoneSize); buttonState |= TriggerToButton(triggers.Left, Buttons.LeftTrigger, DeadZoneSize); buttonState |= TriggerToButton(triggers.Right, Buttons.RightTrigger, DeadZoneSize); GamePadButtons buttons = new GamePadButtons(buttonState); GamePadDPad dpad = new GamePadDPad(buttons.buttons); GamePadState g = new GamePadState(sticks, triggers, buttons, dpad); return(g); }
public static GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZone) { var gamePad = GamePads[(int)playerIndex]; GamePadState state = GamePadState.InitializedState; if (gamePad != null && gamePad._isConnected) { // Check if the device was disconnected var dvc = InputDevice.GetDevice(gamePad._deviceId); if (dvc == null) { Debug.WriteLine("Detected controller disconnect [" + (int)playerIndex + "] "); gamePad._isConnected = false; return(state); } GamePadThumbSticks thumbSticks = new GamePadThumbSticks(gamePad._leftStick, gamePad._rightStick); thumbSticks.ApplyDeadZone(deadZone, 0.3f); state = new GamePadState( thumbSticks, new GamePadTriggers(gamePad._leftTrigger, gamePad._rightTrigger), new GamePadButtons(gamePad._buttons), new GamePadDPad(gamePad._buttons)); } return(state); }
private static GamePadState ReadState(PlayerIndex index, GamePadDeadZone deadZone) { IntPtr device = SdlGamePad.GetDevice(index); PadConfig config = SdlGamePad.GetConfig(index); if (device == IntPtr.Zero || config == null) { return(GamePadState.InitializedState); } Vector2 vector2_1 = config.LeftStick.ReadAxisPair(device); Vector2 vector2_2 = config.RightStick.ReadAxisPair(device); GamePadThumbSticks thumbSticks = new GamePadThumbSticks(new Vector2(vector2_1.X, vector2_1.Y), new Vector2(vector2_2.X, vector2_2.Y)); thumbSticks.ApplyDeadZone(deadZone, 0.27f); GamePadTriggers triggers = new GamePadTriggers(config.LeftTrigger.ReadFloat(device), config.RightTrigger.ReadFloat(device)); GamePadButtons buttons = new GamePadButtons(SdlGamePad.ReadButtons(device, config, 0.27f) | SdlGamePad.StickToButtons(thumbSticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, 0.27f) | SdlGamePad.StickToButtons(thumbSticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, 0.27f) | SdlGamePad.TriggerToButton(triggers.Left, Buttons.LeftTrigger, 0.27f) | SdlGamePad.TriggerToButton(triggers.Right, Buttons.RightTrigger, 0.27f)); GamePadDPad dPad = new GamePadDPad(buttons.buttons); return(new GamePadState(thumbSticks, triggers, buttons, dPad)); }
static GamePadState ReadState(PlayerIndex index, GamePadDeadZone deadZone) { const float DeadZoneSize = 0.27f; IntPtr device = GetDevice(index); PadConfig c = GetConfig(index); if (device == IntPtr.Zero || c == null) { return(GamePadState.InitializedState); } GamePadThumbSticks sticks = new GamePadThumbSticks(new Vector2(c.LeftStick.ReadAxisPair(device)), new Vector2(c.RightStick.ReadAxisPair(device))); sticks.ApplyDeadZone(deadZone, DeadZoneSize); GamePadTriggers triggers = new GamePadTriggers(c.LeftTrigger.ReadFloat(device), c.RightTrigger.ReadFloat(device)); GamePadButtons buttons = new GamePadButtons(ReadButtons(device, c, DeadZoneSize)); GamePadDPad dpad = new GamePadDPad(buttons.buttons); GamePadState g = new GamePadState(sticks, triggers, buttons, dpad); return(g); }
private static GamePadState PlatformGetState(int index, GamePadDeadZone deadZoneMode) { var gamePad = GamePads[index]; GamePadState state = GamePadState.Default; if (gamePad != null && gamePad._isConnected) { // Check if the device was disconnected var dvc = InputDevice.GetDevice(gamePad._deviceId); if (dvc == null) { Debug.WriteLine("Detected controller disconnect [" + index + "] "); gamePad._isConnected = false; return(state); } GamePadThumbSticks thumbSticks = new GamePadThumbSticks(gamePad._leftStick, gamePad._rightStick); thumbSticks.ApplyDeadZone(deadZoneMode, 0.3f); if (gamePad._startButtonPressed) { gamePad._buttons |= Buttons.Start; gamePad._startButtonPressed = false; } else { gamePad._buttons &= ~Buttons.Start; } state = new GamePadState( thumbSticks, new GamePadTriggers(gamePad._leftTrigger, gamePad._rightTrigger), new GamePadButtons(gamePad._buttons), new GamePadDPad(gamePad._buttons)); } return(state); }
static GamePadState ReadState(PlayerIndex index, GamePadDeadZone deadZone) { const float DeadZoneSize = 0.27f; IntPtr device = GetDevice(index); PadConfig c = GetConfig(index); if (device == IntPtr.Zero || c == null) return GamePadState.InitializedState; var leftStick = c.LeftStick.ReadAxisPair(device); var rightStick = c.RightStick.ReadAxisPair(device); GamePadThumbSticks sticks = new GamePadThumbSticks(new Vector2(leftStick.X, leftStick.Y), new Vector2(rightStick.X, rightStick.Y)); sticks.ApplyDeadZone(deadZone, DeadZoneSize); GamePadTriggers triggers = new GamePadTriggers(c.LeftTrigger.ReadFloat(device), c.RightTrigger.ReadFloat(device)); Buttons buttonState = ReadButtons(device, c, DeadZoneSize); buttonState |= StickToButtons(sticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, DeadZoneSize); buttonState |= StickToButtons(sticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, DeadZoneSize); buttonState |= TriggerToButton(triggers.Left, Buttons.LeftTrigger, DeadZoneSize); buttonState |= TriggerToButton(triggers.Right, Buttons.RightTrigger, DeadZoneSize); GamePadButtons buttons = new GamePadButtons(buttonState); GamePadDPad dpad = new GamePadDPad(buttons.buttons); GamePadState g = new GamePadState(sticks, triggers, buttons, dpad); return g; }
public static GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZone) { var gamePad = GamePads[(int) playerIndex]; GamePadState state = GamePadState.InitializedState; if (gamePad != null && gamePad._isConnected) { // Check if the device was disconnected var dvc = InputDevice.GetDevice(gamePad._deviceId); if (dvc == null) { Debug.WriteLine("Detected controller disconnect [" + (int)playerIndex + "] "); gamePad._isConnected = false; return state; } GamePadThumbSticks thumbSticks = new GamePadThumbSticks(gamePad._leftStick, gamePad._rightStick); thumbSticks.ApplyDeadZone(deadZone, 0.3f); state = new GamePadState( thumbSticks, new GamePadTriggers(gamePad._leftTrigger, gamePad._rightTrigger), new GamePadButtons(gamePad._buttons), new GamePadDPad(gamePad._buttons)); } return state; }
public static GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode) { IntPtr device = INTERNAL_devices[(int)playerIndex]; if (device == IntPtr.Zero) { return(InitializedState); } // Do not attempt to understand this number at all costs! const float DeadZoneSize = 0.27f; // SDL_GameController if (INTERNAL_isGameController[(int)playerIndex]) { // The "master" button state is built from this. Buttons gc_buttonState = (Buttons)0; // Sticks GamePadThumbSticks gc_sticks = new GamePadThumbSticks( new Vector2( (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTX ) / 32768.0f, (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTY ) / -32768.0f ), new Vector2( (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTX ) / 32768.0f, (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTY ) / -32768.0f ) ); gc_sticks.ApplyDeadZone(deadZoneMode, DeadZoneSize); gc_buttonState |= READ_StickToButtons( gc_sticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, DeadZoneSize ); gc_buttonState |= READ_StickToButtons( gc_sticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, DeadZoneSize ); // Triggers GamePadTriggers gc_triggers = new GamePadTriggers( (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERLEFT ) / 32768.0f, (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERRIGHT ) / 32768.0f ); gc_buttonState |= READ_TriggerToButton( gc_triggers.Left, Buttons.LeftTrigger, DeadZoneSize ); gc_buttonState |= READ_TriggerToButton( gc_triggers.Right, Buttons.RightTrigger, DeadZoneSize ); // Buttons if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_A) != 0) { gc_buttonState |= Buttons.A; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_B) != 0) { gc_buttonState |= Buttons.B; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_X) != 0) { gc_buttonState |= Buttons.X; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_Y) != 0) { gc_buttonState |= Buttons.Y; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_BACK) != 0) { gc_buttonState |= Buttons.Back; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_GUIDE) != 0) { gc_buttonState |= Buttons.BigButton; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_START) != 0) { gc_buttonState |= Buttons.Start; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSTICK) != 0) { gc_buttonState |= Buttons.LeftStick; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSTICK) != 0) { gc_buttonState |= Buttons.RightStick; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSHOULDER) != 0) { gc_buttonState |= Buttons.LeftShoulder; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) != 0) { gc_buttonState |= Buttons.RightShoulder; } // DPad GamePadDPad gc_dpad; if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_UP) != 0) { gc_buttonState |= Buttons.DPadUp; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_DOWN) != 0) { gc_buttonState |= Buttons.DPadDown; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_LEFT) != 0) { gc_buttonState |= Buttons.DPadLeft; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_RIGHT) != 0) { gc_buttonState |= Buttons.DPadRight; } gc_dpad = new GamePadDPad(gc_buttonState); // Compile the master buttonstate GamePadButtons gc_buttons = new GamePadButtons(gc_buttonState); // Build the GamePadState, increment PacketNumber if state changed. GamePadState gc_builtState = new GamePadState( gc_sticks, gc_triggers, gc_buttons, gc_dpad ); gc_builtState.PacketNumber = INTERNAL_states[(int)playerIndex].PacketNumber; if (gc_builtState != INTERNAL_states[(int)playerIndex]) { gc_builtState.PacketNumber += 1; INTERNAL_states[(int)playerIndex] = gc_builtState; } return(gc_builtState); } // SDL_Joystick // We will interpret the joystick values into this. Buttons buttonState = (Buttons)0; // Sticks GamePadThumbSticks sticks = new GamePadThumbSticks( new Vector2( READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_LX, device), -READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_LY, device) ), new Vector2( READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_RX, device), -READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_RY, device) ) ); sticks.ApplyDeadZone(deadZoneMode, DeadZoneSize); buttonState |= READ_StickToButtons( sticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, DeadZoneSize ); buttonState |= READ_StickToButtons( sticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, DeadZoneSize ); // Buttons buttonState = READ_ReadButtons(device, DeadZoneSize); // Triggers GamePadTriggers triggers = new GamePadTriggers( READTYPE_ReadFloat(INTERNAL_joystickConfig.TRIGGER_LT, device), READTYPE_ReadFloat(INTERNAL_joystickConfig.TRIGGER_RT, device) ); buttonState |= READ_TriggerToButton( triggers.Left, Buttons.LeftTrigger, DeadZoneSize ); buttonState |= READ_TriggerToButton( triggers.Right, Buttons.RightTrigger, DeadZoneSize ); // Compile the GamePadButtons with our Buttons state GamePadButtons buttons = new GamePadButtons(buttonState); // DPad GamePadDPad dpad = new GamePadDPad(buttons.buttons); // Build the GamePadState, increment PacketNumber if state changed. GamePadState builtState = new GamePadState( sticks, triggers, buttons, dpad ); builtState.PacketNumber = INTERNAL_states[(int)playerIndex].PacketNumber; if (builtState != INTERNAL_states[(int)playerIndex]) { builtState.PacketNumber += 1; INTERNAL_states[(int)playerIndex] = builtState; } return(builtState); }
static GamePadState ReadState(PlayerIndex index, GamePadDeadZone deadZone) { const float DeadZoneSize = 0.27f; IntPtr device = GetDevice(index); PadConfig c = GetConfig(index); if (device == IntPtr.Zero || c == null) return GamePadState.InitializedState; GamePadThumbSticks sticks = new GamePadThumbSticks(new Vector2(c.LeftStick.ReadAxisPair(device)), new Vector2(c.RightStick.ReadAxisPair(device))); sticks.ApplyDeadZone(deadZone, DeadZoneSize); GamePadTriggers triggers = new GamePadTriggers(c.LeftTrigger.ReadFloat(device), c.RightTrigger.ReadFloat(device)); GamePadButtons buttons = new GamePadButtons(ReadButtons(device, c, DeadZoneSize)); GamePadDPad dpad = new GamePadDPad(buttons.buttons); GamePadState g = new GamePadState(sticks, triggers, buttons, dpad); return g; }
using System;
private static GamePadState ReadState(PlayerIndex index, GamePadDeadZone deadZone) { IntPtr device = SdlGamePad.GetDevice(index); PadConfig config = SdlGamePad.GetConfig(index); if (device == IntPtr.Zero || config == null) return GamePadState.InitializedState; Vector2 vector2_1 = config.LeftStick.ReadAxisPair(device); Vector2 vector2_2 = config.RightStick.ReadAxisPair(device); GamePadThumbSticks thumbSticks = new GamePadThumbSticks(new Vector2(vector2_1.X, vector2_1.Y), new Vector2(vector2_2.X, vector2_2.Y)); thumbSticks.ApplyDeadZone(deadZone, 0.27f); GamePadTriggers triggers = new GamePadTriggers(config.LeftTrigger.ReadFloat(device), config.RightTrigger.ReadFloat(device)); GamePadButtons buttons = new GamePadButtons(SdlGamePad.ReadButtons(device, config, 0.27f) | SdlGamePad.StickToButtons(thumbSticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, 0.27f) | SdlGamePad.StickToButtons(thumbSticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, 0.27f) | SdlGamePad.TriggerToButton(triggers.Left, Buttons.LeftTrigger, 0.27f) | SdlGamePad.TriggerToButton(triggers.Right, Buttons.RightTrigger, 0.27f)); GamePadDPad dPad = new GamePadDPad(buttons.buttons); return new GamePadState(thumbSticks, triggers, buttons, dPad); }
private static GamePadState PlatformGetState(int index, GamePadDeadZone deadZoneMode) { var gamePad = GamePads[index]; GamePadState state = GamePadState.Default; if (gamePad != null && gamePad._isConnected) { // Check if the device was disconnected var dvc = InputDevice.GetDevice(gamePad._deviceId); if (dvc == null) { Debug.WriteLine("Detected controller disconnect [" + index + "] "); gamePad._isConnected = false; return state; } GamePadThumbSticks thumbSticks = new GamePadThumbSticks(gamePad._leftStick, gamePad._rightStick); thumbSticks.ApplyDeadZone(deadZoneMode, 0.3f); if (gamePad._startButtonPressed) { gamePad._buttons |= Buttons.Start; gamePad._startButtonPressed = false; } else { gamePad._buttons &= ~Buttons.Start; } state = new GamePadState( thumbSticks, new GamePadTriggers(gamePad._leftTrigger, gamePad._rightTrigger), new GamePadButtons(gamePad._buttons), new GamePadDPad(gamePad._buttons)); } return state; }
public static GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode) { IntPtr device = INTERNAL_devices[(int) playerIndex]; if (device == IntPtr.Zero) { return InitializedState; } // Do not attempt to understand this number at all costs! const float DeadZoneSize = 0.27f; // SDL_GameController if (INTERNAL_isGameController[(int) playerIndex]) { // The "master" button state is built from this. Buttons gc_buttonState = (Buttons) 0; // Sticks GamePadThumbSticks gc_sticks = new GamePadThumbSticks( new Vector2( (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTX ) / 32768.0f, (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTY ) / -32768.0f ), new Vector2( (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTX ) / 32768.0f, (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTY ) / -32768.0f ) ); gc_sticks.ApplyDeadZone(deadZoneMode, DeadZoneSize); gc_buttonState |= READ_StickToButtons( gc_sticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, DeadZoneSize ); gc_buttonState |= READ_StickToButtons( gc_sticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, DeadZoneSize ); // Triggers GamePadTriggers gc_triggers = new GamePadTriggers( (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERLEFT ) / 32768.0f, (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERRIGHT ) / 32768.0f ); gc_buttonState |= READ_TriggerToButton( gc_triggers.Left, Buttons.LeftTrigger, DeadZoneSize ); gc_buttonState |= READ_TriggerToButton( gc_triggers.Right, Buttons.RightTrigger, DeadZoneSize ); // Buttons if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_A) != 0) { gc_buttonState |= Buttons.A; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_B) != 0) { gc_buttonState |= Buttons.B; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_X) != 0) { gc_buttonState |= Buttons.X; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_Y) != 0) { gc_buttonState |= Buttons.Y; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_BACK) != 0) { gc_buttonState |= Buttons.Back; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_GUIDE) != 0) { gc_buttonState |= Buttons.BigButton; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_START) != 0) { gc_buttonState |= Buttons.Start; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSTICK) != 0) { gc_buttonState |= Buttons.LeftStick; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSTICK) != 0) { gc_buttonState |= Buttons.RightStick; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSHOULDER) != 0) { gc_buttonState |= Buttons.LeftShoulder; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) != 0) { gc_buttonState |= Buttons.RightShoulder; } // DPad GamePadDPad gc_dpad; if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_UP) != 0) { gc_buttonState |= Buttons.DPadUp; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_DOWN) != 0) { gc_buttonState |= Buttons.DPadDown; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_LEFT) != 0) { gc_buttonState |= Buttons.DPadLeft; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_RIGHT) != 0) { gc_buttonState |= Buttons.DPadRight; } gc_dpad = new GamePadDPad(gc_buttonState); // Compile the master buttonstate GamePadButtons gc_buttons = new GamePadButtons(gc_buttonState); // Build the GamePadState, increment PacketNumber if state changed. GamePadState gc_builtState = new GamePadState( gc_sticks, gc_triggers, gc_buttons, gc_dpad ); gc_builtState.PacketNumber = INTERNAL_states[(int) playerIndex].PacketNumber; if (gc_builtState != INTERNAL_states[(int) playerIndex]) { gc_builtState.PacketNumber += 1; INTERNAL_states[(int) playerIndex] = gc_builtState; } return gc_builtState; } // SDL_Joystick // We will interpret the joystick values into this. Buttons buttonState = (Buttons) 0; // Sticks GamePadThumbSticks sticks = new GamePadThumbSticks( new Vector2( READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_LX, device), -READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_LY, device) ), new Vector2( READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_RX, device), -READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_RY, device) ) ); sticks.ApplyDeadZone(deadZoneMode, DeadZoneSize); buttonState |= READ_StickToButtons( sticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, DeadZoneSize ); buttonState |= READ_StickToButtons( sticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, DeadZoneSize ); // Buttons buttonState = READ_ReadButtons(device, DeadZoneSize); // Triggers GamePadTriggers triggers = new GamePadTriggers( READTYPE_ReadFloat(INTERNAL_joystickConfig.TRIGGER_LT, device), READTYPE_ReadFloat(INTERNAL_joystickConfig.TRIGGER_RT, device) ); buttonState |= READ_TriggerToButton( triggers.Left, Buttons.LeftTrigger, DeadZoneSize ); buttonState |= READ_TriggerToButton( triggers.Right, Buttons.RightTrigger, DeadZoneSize ); // Compile the GamePadButtons with our Buttons state GamePadButtons buttons = new GamePadButtons(buttonState); // DPad GamePadDPad dpad = new GamePadDPad(buttons.buttons); // Build the GamePadState, increment PacketNumber if state changed. GamePadState builtState = new GamePadState( sticks, triggers, buttons, dpad ); builtState.PacketNumber = INTERNAL_states[(int) playerIndex].PacketNumber; if (builtState != INTERNAL_states[(int) playerIndex]) { builtState.PacketNumber += 1; INTERNAL_states[(int) playerIndex] = builtState; } return builtState; }