private void ParseButtonStates(GamePadState currentState, GamePadState previousState) { if (currentState.Guide != previousState.Guide) { OnDeviceButtonStateChanged(XInputControls.Button.Guide, currentState.Guide); } if (currentState.Start != previousState.Start) { OnDeviceButtonStateChanged(XInputControls.Button.Start, currentState.Start); } if (currentState.Options != previousState.Options) { OnDeviceButtonStateChanged(XInputControls.Button.Back, currentState.Options); } if (currentState.Left != previousState.Left) { OnDeviceButtonStateChanged(XInputControls.Button.DpadLeft, currentState.Left); } if (currentState.Up != previousState.Up) { OnDeviceButtonStateChanged(XInputControls.Button.DpadUp, currentState.Up); } if (currentState.Right != previousState.Right) { OnDeviceButtonStateChanged(XInputControls.Button.DpadRight, currentState.Right); } if (currentState.Down != previousState.Down) { OnDeviceButtonStateChanged(XInputControls.Button.DpadDown, currentState.Down); } if (currentState.A != previousState.A) { OnDeviceButtonStateChanged(XInputControls.Button.A, currentState.A); } if (currentState.B != previousState.B) { OnDeviceButtonStateChanged(XInputControls.Button.B, currentState.B); } if (currentState.X != previousState.X) { OnDeviceButtonStateChanged(XInputControls.Button.X, currentState.X); } if (currentState.Y != previousState.Y) { OnDeviceButtonStateChanged(XInputControls.Button.Y, currentState.Y); } if (currentState.LeftBumper != previousState.LeftBumper) { OnDeviceButtonStateChanged(XInputControls.Button.LB, currentState.LeftBumper); } if (currentState.LeftStick != previousState.LeftStick) { OnDeviceButtonStateChanged(XInputControls.Button.LS, currentState.LeftStick); } if (currentState.RightBumper != previousState.RightBumper) { OnDeviceButtonStateChanged(XInputControls.Button.RB, currentState.RightBumper); } if (currentState.RightStick != previousState.RightStick) { OnDeviceButtonStateChanged(XInputControls.Button.RS, currentState.RightStick); } }
private void ParseAnalogStates(GamePadState currentState) { int x; int y; // Parsing left thumbstick state x = (int)((float)currentState.LeftStickX / short.MaxValue * THUMBSTICK_AXIS_RANGE); y = (int)((float)currentState.LeftStickY / short.MaxValue * THUMBSTICK_AXIS_RANGE); if ((-THUMBSTICK_DEAD_ZONE_X <= x) && (x <= THUMBSTICK_DEAD_ZONE_X)) { x = 0; } if ((-THUMBSTICK_DEAD_ZONE_Y <= y) && (y <= THUMBSTICK_DEAD_ZONE_Y)) { y = 0; } if (x != 0 || y != 0) { OnDeviceAnalogStateChanged(XInputControls.Analog.LeftThumbStick, new int[] { x, -y }); } // Parsing right thumbstick state x = (int)((float)currentState.RightStickX / short.MaxValue * THUMBSTICK_AXIS_RANGE); y = (int)((float)currentState.RightStickY / short.MaxValue * THUMBSTICK_AXIS_RANGE); if ((-THUMBSTICK_DEAD_ZONE_X <= x) && (x <= THUMBSTICK_DEAD_ZONE_X)) { x = 0; } if ((-THUMBSTICK_DEAD_ZONE_Y <= y) && (y <= THUMBSTICK_DEAD_ZONE_Y)) { y = 0; } if (x != 0 || y != 0) { OnDeviceAnalogStateChanged(XInputControls.Analog.RightThumbStick, new int[] { x, -y }); } // Parsing left trigger state OnDeviceAnalogStateChanged(XInputControls.Analog.LeftTrigger, new int[] { currentState.LeftTrigger }); if (currentState.LeftTrigger > TRIGGER_CLICK_THRESHOLD) { if (!isLeftTriggerClicked) { isLeftTriggerClicked = true; OnDeviceButtonStateChanged(XInputControls.Button.LT, true); } } else { if (isLeftTriggerClicked) { isLeftTriggerClicked = false; OnDeviceButtonStateChanged(XInputControls.Button.LT, false); } } // Parsing right trigger state OnDeviceAnalogStateChanged(XInputControls.Analog.RightTrigger, new int[] { currentState.RightTrigger }); if (currentState.RightTrigger > TRIGGER_CLICK_THRESHOLD) { if (!isRightTriggerClicked) { isRightTriggerClicked = true; OnDeviceButtonStateChanged(XInputControls.Button.RT, true); } } else { if (isRightTriggerClicked) { isRightTriggerClicked = false; OnDeviceButtonStateChanged(XInputControls.Button.RT, false); } } }