From b911cefab3f39506e22d517088cc9869f363e897 Mon Sep 17 00:00:00 2001
From: Reece Mackie <20544390+Rover656@users.noreply.github.com>
Date: Sat, 27 Apr 2019 20:49:33 +0100
Subject: [PATCH 01/11] First gamepad stuff
---
.../examples/core_basic_window_cpp.vcxproj | 9 +-
src/core.c | 126 +++++++++++++++---
src/raylib.h | 51 +++++++
3 files changed, 162 insertions(+), 24 deletions(-)
diff --git a/projects/VS2017/examples/core_basic_window_cpp.vcxproj b/projects/VS2017/examples/core_basic_window_cpp.vcxproj
index cfe085241..bc8221a57 100644
--- a/projects/VS2017/examples/core_basic_window_cpp.vcxproj
+++ b/projects/VS2017/examples/core_basic_window_cpp.vcxproj
@@ -167,12 +167,13 @@
-
- {e89d61ac-55de-4482-afd4-df7242ebc859}
-
+
-
+
+ {e89d61ac-55de-4482-afd4-df7242ebc859}
+ true
+
diff --git a/src/core.c b/src/core.c
index 0d17fdada..448ad6685 100644
--- a/src/core.c
+++ b/src/core.c
@@ -3050,6 +3050,86 @@ static bool GetMouseButtonStatus(int button)
#endif
}
+static GamepadButton GetGamepadButton(int button)
+{
+ GamepadButton b = GAMEPAD_BUTTON_UNKNOWN;
+#if defined(PLATFORM_DESKTOP)
+ switch (button)
+ {
+ case GLFW_GAMEPAD_BUTTON_Y: b = GAMEPAD_BUTTON_RIGHT_FACE_UP; break;
+ case GLFW_GAMEPAD_BUTTON_B: b = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break;
+ case GLFW_GAMEPAD_BUTTON_A: b = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break;
+ case GLFW_GAMEPAD_BUTTON_X: b = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break;
+ case GLFW_GAMEPAD_BUTTON_LEFT_BUMPER: b = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break;
+ case GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER: b = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break;
+ case GLFW_GAMEPAD_BUTTON_BACK: b = GAMEPAD_BUTTON_MIDDLE_LEFT; break;
+ case GLFW_GAMEPAD_BUTTON_GUIDE: b = GAMEPAD_BUTTON_MIDDLE; break;
+ case GLFW_GAMEPAD_BUTTON_START: b = GAMEPAD_BUTTON_MIDDLE_RIGHT; break;
+ case GLFW_GAMEPAD_BUTTON_DPAD_UP: b = GAMEPAD_BUTTON_LEFT_FACE_UP; break;
+ case GLFW_GAMEPAD_BUTTON_DPAD_RIGHT: b = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break;
+ case GLFW_GAMEPAD_BUTTON_DPAD_DOWN: b = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break;
+ case GLFW_GAMEPAD_BUTTON_DPAD_LEFT: b = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break;
+ case GLFW_GAMEPAD_BUTTON_LEFT_THUMB: b = GAMEPAD_BUTTON_LEFT_THUMB; break;
+ case GLFW_GAMEPAD_BUTTON_RIGHT_THUMB: b = GAMEPAD_BUTTON_RIGHT_THUMB; break;
+ }
+#endif
+
+#if defined(PLATFORM_WEB)
+ //TODO: TEST
+ //https://www.w3.org/TR/gamepad/#gamepad-interface
+ switch (button)
+ {
+ case 0: b = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break;
+ case 1: b = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break;
+ case 2: b = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break;
+ case 3: b = GAMEPAD_BUTTON_RIGHT_FACE_UP; break;
+ case 4: b = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break;
+ case 5: b = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break;
+ case 6: b = GAMEPAD_BUTTON_LEFT_TRIGGER_2; break;
+ case 7: b = GAMEPAD_BUTTON_RIGHT_TRIGGER_2; break;
+ case 8: b = GAMEPAD_BUTTON_MIDDLE_LEFT; break;
+ case 9: b = GAMEPAD_BUTTON_MIDDLE_RIGHT; break;
+ case 10: b = GAMEPAD_BUTTON_LEFT_THUMB; break;
+ case 11: b = GAMEPAD_BUTTON_RIGHT_THUMB; break;
+ case 12: b = GAMEPAD_BUTTON_LEFT_FACE_UP; break;
+ case 13: b = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break;
+ case 14: b = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break;
+ case 15: b = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break;
+ }
+#endif
+
+ return b;
+}
+
+static GamepadAxis GetGamepadAxis(int axis)
+{
+ GamepadAxis a = GAMEPAD_AXIS_UNKNOWN;
+#if defined(PLATFORM_DESKTOP)
+ switch(axis)
+ {
+ case GLFW_GAMEPAD_AXIS_LEFT_X: a = GAMEPAD_AXIS_LEFT_X; break;
+ case GLFW_GAMEPAD_AXIS_LEFT_Y: a = GAMEPAD_AXIS_LEFT_Y; break;
+ case GLFW_GAMEPAD_AXIS_RIGHT_X: a = GAMEPAD_AXIS_RIGHT_X; break;
+ case GLFW_GAMEPAD_AXIS_RIGHT_Y: a = GAMEPAD_AXIS_RIGHT_Y; break;
+ case GLFW_GAMEPAD_AXIS_LEFT_TRIGGER: a = GAMEPAD_AXIS_LEFT_TRIGGER; break;
+ case GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER: a = GAMEPAD_AXIS_RIGHT_TRIGGER; break;
+ }
+#endif
+
+#if defined(PLATFORM_WEB)
+ //TODO: TEST
+ switch(axis)
+ {
+ case 0: a = GAMEPAD_AXIS_LEFT_X;
+ case 1: a = GAMEPAD_AXIS_LEFT_Y;
+ case 2: a = GAMEPAD_AXIS_RIGHT_X;
+ case 3: a = GAMEPAD_AXIS_RIGHT_X;
+ }
+#endif
+
+ return a;
+}
+
// Poll (store) all input events
static void PollInputEvents(void)
{
@@ -3114,7 +3194,7 @@ static void PollInputEvents(void)
#if defined(PLATFORM_DESKTOP)
// Check if gamepads are ready
- // NOTE: We do it here in case of disconection
+ // NOTE: We do it here in case of disconnection
for (int i = 0; i < MAX_GAMEPADS; i++)
{
if (glfwJoystickPresent(i)) gamepadReady[i] = true;
@@ -3131,33 +3211,37 @@ static void PollInputEvents(void)
// Get current gamepad state
// NOTE: There is no callback available, so we get it manually
- const unsigned char *buttons;
- int buttonsCount;
+ //Get remapped buttons
+ GLFWgamepadstate state;
+ glfwGetGamepadState(i, &state); //This remapps all gamepads so they work the same
+ const unsigned char *buttons = state.buttons;
- buttons = glfwGetJoystickButtons(i, &buttonsCount);
-
- for (int k = 0; (buttons != NULL) && (k < buttonsCount) && (buttonsCount < MAX_GAMEPAD_BUTTONS); k++)
+ for (int k = 0; (buttons != NULL) && (k < GLFW_GAMEPAD_BUTTON_DPAD_LEFT + 1) && (k < MAX_GAMEPAD_BUTTONS); k++)
{
+ const GamepadButton button = GetGamepadButton(k);
+
if (buttons[k] == GLFW_PRESS)
{
- currentGamepadState[i][k] = 1;
- lastGamepadButtonPressed = k;
+ currentGamepadState[i][button] = 1;
+ lastGamepadButtonPressed = button;
}
- else currentGamepadState[i][k] = 0;
+ else currentGamepadState[i][button] = 0;
}
// Get current axis state
- const float *axes;
- int axisCount = 0;
+ const float *axes = state.axes;
- axes = glfwGetJoystickAxes(i, &axisCount);
-
- for (int k = 0; (axes != NULL) && (k < axisCount) && (k < MAX_GAMEPAD_AXIS); k++)
+ for (int k = 0; (axes != NULL) && (k < GLFW_GAMEPAD_AXIS_LAST + 1) && (k < MAX_GAMEPAD_AXIS); k++)
{
- gamepadAxisState[i][k] = axes[k];
+ const GamepadAxis axis = GetGamepadAxis(k);
+ gamepadAxisState[i][axis] = axes[k];
}
- gamepadAxisCount = axisCount;
+ //Register buttons for 2nd triggers
+ currentGamepadState[i][GAMEPAD_BUTTON_LEFT_TRIGGER_2] = (char)(gamepadAxisState[i][GAMEPAD_AXIS_LEFT_TRIGGER] > 0.1);
+ currentGamepadState[i][GAMEPAD_BUTTON_RIGHT_TRIGGER_2] = (char)(gamepadAxisState[i][GAMEPAD_AXIS_RIGHT_TRIGGER] > 0.1);
+
+ gamepadAxisCount = GLFW_GAMEPAD_AXIS_LAST;
}
}
@@ -3191,12 +3275,13 @@ static void PollInputEvents(void)
// Register buttons data for every connected gamepad
for (int j = 0; (j < gamepadState.numButtons) && (j < MAX_GAMEPAD_BUTTONS); j++)
{
+ const GamepadButton button = GetGamepadButton(j);
if (gamepadState.digitalButton[j] == 1)
{
- currentGamepadState[i][j] = 1;
- lastGamepadButtonPressed = j;
+ currentGamepadState[i][button] = 1;
+ lastGamepadButtonPressed = button;
}
- else currentGamepadState[i][j] = 0;
+ else currentGamepadState[i][button] = 0;
//TraceLog(LOG_DEBUG, "Gamepad %d, button %d: Digital: %d, Analog: %g", gamepadState.index, j, gamepadState.digitalButton[j], gamepadState.analogButton[j]);
}
@@ -3204,7 +3289,8 @@ static void PollInputEvents(void)
// Register axis data for every connected gamepad
for (int j = 0; (j < gamepadState.numAxes) && (j < MAX_GAMEPAD_AXIS); j++)
{
- gamepadAxisState[i][j] = gamepadState.axis[j];
+ const GamepadAxis axis = GetGamepadAxis(k);
+ gamepadAxisState[i][axis] = gamepadState.axis[j];
}
gamepadAxisCount = gamepadState.numAxes;
diff --git a/src/raylib.h b/src/raylib.h
index 43260e066..9759000fb 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -619,6 +619,57 @@ typedef enum {
GAMEPAD_PLAYER4 = 3
} GamepadNumber;
+// Gamepad Buttons
+typedef enum
+{
+ //This is here just for error checking
+ GAMEPAD_BUTTON_UNKNOWN = 0,
+
+ //This is normally ABXY/Circle, Triangle, Square, Cross. No support for 6 button controllers though..
+ GAMEPAD_BUTTON_LEFT_FACE_UP,
+ GAMEPAD_BUTTON_LEFT_FACE_RIGHT,
+ GAMEPAD_BUTTON_LEFT_FACE_DOWN,
+ GAMEPAD_BUTTON_LEFT_FACE_LEFT,
+
+
+ //This is normally a DPAD
+ GAMEPAD_BUTTON_RIGHT_FACE_UP,
+ GAMEPAD_BUTTON_RIGHT_FACE_RIGHT,
+ GAMEPAD_BUTTON_RIGHT_FACE_DOWN,
+ GAMEPAD_BUTTON_RIGHT_FACE_LEFT,
+
+ //Triggers
+ GAMEPAD_BUTTON_LEFT_TRIGGER_1,
+ GAMEPAD_BUTTON_LEFT_TRIGGER_2,
+ GAMEPAD_BUTTON_RIGHT_TRIGGER_1,
+ GAMEPAD_BUTTON_RIGHT_TRIGGER_2,
+
+ //These are buttons in the center of the gamepad
+ GAMEPAD_BUTTON_MIDDLE_LEFT, //PS3 Select
+ GAMEPAD_BUTTON_MIDDLE, //PS Button/XBOX Button
+ GAMEPAD_BUTTON_MIDDLE_RIGHT, //PS3 Start
+
+ //These are the joystick press in buttons
+ GAMEPAD_BUTTON_LEFT_THUMB,
+ GAMEPAD_BUTTON_RIGHT_THUMB
+} GamepadButton;
+
+typedef enum
+{
+ GAMEPAD_AXIS_UNKNOWN = 0,
+ //Left stick
+ GAMEPAD_AXIS_LEFT_X,
+ GAMEPAD_AXIS_LEFT_Y,
+
+ //Right stick
+ GAMEPAD_AXIS_RIGHT_X,
+ GAMEPAD_AXIS_RIGHT_Y,
+
+ //Pressure levels
+ GAMEPAD_AXIS_LEFT_TRIGGER, // [1..-1] (pressure-level)
+ GAMEPAD_AXIS_RIGHT_TRIGGER // [1..-1] (pressure-level)
+} GamepadAxis;
+
// PS3 USB Controller Buttons
// TODO: Provide a generic way to list gamepad controls schemes,
// defining specific controls schemes is not a good option
From 56ded3259ded9c5fc8d5c7dff1a50044326f5ab5 Mon Sep 17 00:00:00 2001
From: Reece Mackie <20544390+Rover656@users.noreply.github.com>
Date: Sat, 27 Apr 2019 21:36:57 +0100
Subject: [PATCH 02/11] More work, UWP now supports it and deleted old gamepads
---
projects/VS2017.UWP/raylib.App.UWP/App.cpp | 6 +-
projects/VS2017.UWP/raylib.App.UWP/BaseApp.h | 41 +++++-----
.../examples/core_basic_window_cpp.vcxproj | 7 +-
src/core.c | 38 +++++++++
src/raylib.h | 78 -------------------
5 files changed, 66 insertions(+), 104 deletions(-)
diff --git a/projects/VS2017.UWP/raylib.App.UWP/App.cpp b/projects/VS2017.UWP/raylib.App.UWP/App.cpp
index ae137ed2a..fb07636c5 100644
--- a/projects/VS2017.UWP/raylib.App.UWP/App.cpp
+++ b/projects/VS2017.UWP/raylib.App.UWP/App.cpp
@@ -36,8 +36,8 @@ void App::Update()
ClearBackground(RAYWHITE);
- posX += GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_LEFT_X) * 5;
- posY += GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_LEFT_Y) * -5;
+ posX += GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_X) * 5;
+ posY += GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_Y) * -5;
DrawRectangle(posX, posY, 400, 100, RED);
@@ -63,7 +63,7 @@ void App::Update()
if (IsKeyDown(KEY_LEFT_ALT))
DrawRectangle(250, 250, 20, 20, BLACK);
- if (IsKeyDown(KEY_BACKSPACE))
+ if (IsKeyDown(KEY_BACKSPACE) || IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_DOWN))
DrawRectangle(280, 250, 20, 20, BLACK);
if (IsMouseButtonDown(MOUSE_LEFT_BUTTON))
DrawRectangle(280, 250, 20, 20, BLACK);
diff --git a/projects/VS2017.UWP/raylib.App.UWP/BaseApp.h b/projects/VS2017.UWP/raylib.App.UWP/BaseApp.h
index e27909e25..65483754d 100644
--- a/projects/VS2017.UWP/raylib.App.UWP/BaseApp.h
+++ b/projects/VS2017.UWP/raylib.App.UWP/BaseApp.h
@@ -371,27 +371,30 @@ protected:
GamepadReading reading = gamepad->GetCurrentReading();
// NOTE: Maybe it would be wiser to redefine the gamepad button mappings in "raylib.h" for the UWP platform instead of remapping them manually
- RegisterGamepadButton(i, GAMEPAD_XBOX_BUTTON_A, ((reading.Buttons & GamepadButtons::A) == GamepadButtons::A));
- RegisterGamepadButton(i, GAMEPAD_XBOX_BUTTON_B, ((reading.Buttons & GamepadButtons::B) == GamepadButtons::B));
- RegisterGamepadButton(i, GAMEPAD_XBOX_BUTTON_X, ((reading.Buttons & GamepadButtons::X) == GamepadButtons::X));
- RegisterGamepadButton(i, GAMEPAD_XBOX_BUTTON_Y, ((reading.Buttons & GamepadButtons::Y) == GamepadButtons::Y));
- RegisterGamepadButton(i, GAMEPAD_XBOX_BUTTON_LB, ((reading.Buttons & GamepadButtons::LeftShoulder) == GamepadButtons::LeftShoulder));
- RegisterGamepadButton(i, GAMEPAD_XBOX_BUTTON_RB, ((reading.Buttons & GamepadButtons::RightShoulder) == GamepadButtons::RightShoulder));
- RegisterGamepadButton(i, GAMEPAD_XBOX_BUTTON_SELECT, ((reading.Buttons & GamepadButtons::View) == GamepadButtons::View)); // Changed for XB1 Controller
- RegisterGamepadButton(i, GAMEPAD_XBOX_BUTTON_START, ((reading.Buttons & GamepadButtons::Menu) == GamepadButtons::Menu)); // Changed for XB1 Controller
- RegisterGamepadButton(i, GAMEPAD_XBOX_BUTTON_UP, ((reading.Buttons & GamepadButtons::DPadUp) == GamepadButtons::DPadUp));
- RegisterGamepadButton(i, GAMEPAD_XBOX_BUTTON_RIGHT, ((reading.Buttons & GamepadButtons::DPadRight) == GamepadButtons::DPadRight));
- RegisterGamepadButton(i, GAMEPAD_XBOX_BUTTON_DOWN, ((reading.Buttons & GamepadButtons::DPadDown) == GamepadButtons::DPadDown));
- RegisterGamepadButton(i, GAMEPAD_XBOX_BUTTON_LEFT, ((reading.Buttons & GamepadButtons::DPadLeft) == GamepadButtons::DPadLeft));
- RegisterGamepadButton(i, GAMEPAD_XBOX_BUTTON_HOME, false); // Home button not supported by UWP
+ RegisterGamepadButton(i, GAMEPAD_BUTTON_RIGHT_FACE_DOWN, ((reading.Buttons & GamepadButtons::A) == GamepadButtons::A));
+ RegisterGamepadButton(i, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT, ((reading.Buttons & GamepadButtons::B) == GamepadButtons::B));
+ RegisterGamepadButton(i, GAMEPAD_BUTTON_RIGHT_FACE_LEFT, ((reading.Buttons & GamepadButtons::X) == GamepadButtons::X));
+ RegisterGamepadButton(i, GAMEPAD_BUTTON_RIGHT_FACE_UP, ((reading.Buttons & GamepadButtons::Y) == GamepadButtons::Y));
+
+ RegisterGamepadButton(i, GAMEPAD_BUTTON_LEFT_TRIGGER_1, ((reading.Buttons & GamepadButtons::LeftShoulder) == GamepadButtons::LeftShoulder));
+ RegisterGamepadButton(i, GAMEPAD_BUTTON_RIGHT_TRIGGER_1, ((reading.Buttons & GamepadButtons::RightShoulder) == GamepadButtons::RightShoulder));
+
+ RegisterGamepadButton(i, GAMEPAD_BUTTON_MIDDLE_LEFT, ((reading.Buttons & GamepadButtons::View) == GamepadButtons::View)); // Changed for XB1 Controller
+ RegisterGamepadButton(i, GAMEPAD_BUTTON_MIDDLE_RIGHT, ((reading.Buttons & GamepadButtons::Menu) == GamepadButtons::Menu)); // Changed for XB1 Controller
+
+ RegisterGamepadButton(i, GAMEPAD_BUTTON_LEFT_FACE_UP, ((reading.Buttons & GamepadButtons::DPadUp) == GamepadButtons::DPadUp));
+ RegisterGamepadButton(i, GAMEPAD_BUTTON_LEFT_FACE_RIGHT, ((reading.Buttons & GamepadButtons::DPadRight) == GamepadButtons::DPadRight));
+ RegisterGamepadButton(i, GAMEPAD_BUTTON_LEFT_FACE_DOWN, ((reading.Buttons & GamepadButtons::DPadDown) == GamepadButtons::DPadDown));
+ RegisterGamepadButton(i, GAMEPAD_BUTTON_LEFT_FACE_LEFT, ((reading.Buttons & GamepadButtons::DPadLeft) == GamepadButtons::DPadLeft));
+ RegisterGamepadButton(i, GAMEPAD_BUTTON_MIDDLE, false); // Home button not supported by UWP
// Get current axis state
- RegisterGamepadAxis(i, GAMEPAD_XBOX_AXIS_LEFT_X, (float)reading.LeftThumbstickX);
- RegisterGamepadAxis(i, GAMEPAD_XBOX_AXIS_LEFT_Y, (float)reading.LeftThumbstickY);
- RegisterGamepadAxis(i, GAMEPAD_XBOX_AXIS_RIGHT_X, (float)reading.RightThumbstickX);
- RegisterGamepadAxis(i, GAMEPAD_XBOX_AXIS_RIGHT_Y, (float)reading.RightThumbstickY);
- RegisterGamepadAxis(i, GAMEPAD_XBOX_AXIS_LT, (float)reading.LeftTrigger);
- RegisterGamepadAxis(i, GAMEPAD_XBOX_AXIS_RT, (float)reading.RightTrigger);
+ RegisterGamepadAxis(i, GAMEPAD_AXIS_LEFT_X, (float)reading.LeftThumbstickX);
+ RegisterGamepadAxis(i, GAMEPAD_AXIS_LEFT_Y, (float)reading.LeftThumbstickY);
+ RegisterGamepadAxis(i, GAMEPAD_AXIS_RIGHT_X, (float)reading.RightThumbstickX);
+ RegisterGamepadAxis(i, GAMEPAD_AXIS_RIGHT_Y, (float)reading.RightThumbstickY);
+ RegisterGamepadAxis(i, GAMEPAD_AXIS_LEFT_TRIGGER, (float)reading.LeftTrigger);
+ RegisterGamepadAxis(i, GAMEPAD_AXIS_RIGHT_TRIGGER, (float)reading.RightTrigger);
}
}
}
diff --git a/projects/VS2017/examples/core_basic_window_cpp.vcxproj b/projects/VS2017/examples/core_basic_window_cpp.vcxproj
index bc8221a57..cfe085241 100644
--- a/projects/VS2017/examples/core_basic_window_cpp.vcxproj
+++ b/projects/VS2017/examples/core_basic_window_cpp.vcxproj
@@ -166,15 +166,14 @@
kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
-
-
-
{e89d61ac-55de-4482-afd4-df7242ebc859}
- true
+
+
+
diff --git a/src/core.c b/src/core.c
index 7977d0adf..2aa22fa64 100644
--- a/src/core.c
+++ b/src/core.c
@@ -3095,20 +3095,50 @@ static GamepadButton GetGamepadButton(int button)
case GLFW_GAMEPAD_BUTTON_B: b = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break;
case GLFW_GAMEPAD_BUTTON_A: b = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break;
case GLFW_GAMEPAD_BUTTON_X: b = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break;
+
case GLFW_GAMEPAD_BUTTON_LEFT_BUMPER: b = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break;
case GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER: b = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break;
+
case GLFW_GAMEPAD_BUTTON_BACK: b = GAMEPAD_BUTTON_MIDDLE_LEFT; break;
case GLFW_GAMEPAD_BUTTON_GUIDE: b = GAMEPAD_BUTTON_MIDDLE; break;
case GLFW_GAMEPAD_BUTTON_START: b = GAMEPAD_BUTTON_MIDDLE_RIGHT; break;
+
case GLFW_GAMEPAD_BUTTON_DPAD_UP: b = GAMEPAD_BUTTON_LEFT_FACE_UP; break;
case GLFW_GAMEPAD_BUTTON_DPAD_RIGHT: b = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break;
case GLFW_GAMEPAD_BUTTON_DPAD_DOWN: b = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break;
case GLFW_GAMEPAD_BUTTON_DPAD_LEFT: b = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break;
+
case GLFW_GAMEPAD_BUTTON_LEFT_THUMB: b = GAMEPAD_BUTTON_LEFT_THUMB; break;
case GLFW_GAMEPAD_BUTTON_RIGHT_THUMB: b = GAMEPAD_BUTTON_RIGHT_THUMB; break;
}
#endif
+#if defined(PLATFORM_UWP)
+ /*switch(button)
+ {
+ case 4: b = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break;
+ case 8: b = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break;
+ case 16: b = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break;
+ case 32: b = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break;
+
+ case 128: b = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break;
+ case 256: b = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break;
+ case 512: b = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break;
+ case 64: b = GAMEPAD_BUTTON_LEFT_FACE_UP; break;
+
+ case 1024: b = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break;
+ case 2048: b = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break;
+
+ case 4096: b = GAMEPAD_BUTTON_LEFT_THUMB; break;
+ case 8192: b = GAMEPAD_BUTTON_RIGHT_THUMB; break;
+
+ case 2: b = GAMEPAD_BUTTON_MIDDLE_LEFT;
+ case 1: b = GAMEPAD_BUTTON_MIDDLE_RIGHT;
+ }*/
+ //Above might not be most efficient, so not doing it for now
+ b = button;
+#endif
+
#if defined(PLATFORM_WEB)
//TODO: TEST
//https://www.w3.org/TR/gamepad/#gamepad-interface
@@ -3151,6 +3181,10 @@ static GamepadAxis GetGamepadAxis(int axis)
}
#endif
+#if defined(PLATFORM_UWP)
+ a = axis; //UWP will provide the correct axis
+#endif
+
#if defined(PLATFORM_WEB)
//TODO: TEST
switch(axis)
@@ -3347,6 +3381,10 @@ static void PollInputEvents(void)
{
if (msg->Int0 < MAX_GAMEPADS && msg->Int1 < MAX_GAMEPAD_AXIS)
gamepadAxisState[msg->Int0][msg->Int1] = msg->Float0;
+
+ //Register buttons for 2nd triggers
+ currentGamepadState[msg->Int0][GAMEPAD_BUTTON_LEFT_TRIGGER_2] = (char)(gamepadAxisState[msg->Int0][GAMEPAD_AXIS_LEFT_TRIGGER] > 0.1);
+ currentGamepadState[msg->Int0][GAMEPAD_BUTTON_RIGHT_TRIGGER_2] = (char)(gamepadAxisState[msg->Int0][GAMEPAD_AXIS_RIGHT_TRIGGER] > 0.1);
break;
}
diff --git a/src/raylib.h b/src/raylib.h
index 9759000fb..1b4a54340 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -670,84 +670,6 @@ typedef enum
GAMEPAD_AXIS_RIGHT_TRIGGER // [1..-1] (pressure-level)
} GamepadAxis;
-// PS3 USB Controller Buttons
-// TODO: Provide a generic way to list gamepad controls schemes,
-// defining specific controls schemes is not a good option
-typedef enum {
- GAMEPAD_PS3_BUTTON_TRIANGLE = 0,
- GAMEPAD_PS3_BUTTON_CIRCLE = 1,
- GAMEPAD_PS3_BUTTON_CROSS = 2,
- GAMEPAD_PS3_BUTTON_SQUARE = 3,
- GAMEPAD_PS3_BUTTON_L1 = 6,
- GAMEPAD_PS3_BUTTON_R1 = 7,
- GAMEPAD_PS3_BUTTON_L2 = 4,
- GAMEPAD_PS3_BUTTON_R2 = 5,
- GAMEPAD_PS3_BUTTON_START = 8,
- GAMEPAD_PS3_BUTTON_SELECT = 9,
- GAMEPAD_PS3_BUTTON_PS = 12,
- GAMEPAD_PS3_BUTTON_UP = 24,
- GAMEPAD_PS3_BUTTON_RIGHT = 25,
- GAMEPAD_PS3_BUTTON_DOWN = 26,
- GAMEPAD_PS3_BUTTON_LEFT = 27
-} GamepadPS3Button;
-
-// PS3 USB Controller Axis
-typedef enum {
- GAMEPAD_PS3_AXIS_LEFT_X = 0,
- GAMEPAD_PS3_AXIS_LEFT_Y = 1,
- GAMEPAD_PS3_AXIS_RIGHT_X = 2,
- GAMEPAD_PS3_AXIS_RIGHT_Y = 5,
- GAMEPAD_PS3_AXIS_L2 = 3, // [1..-1] (pressure-level)
- GAMEPAD_PS3_AXIS_R2 = 4 // [1..-1] (pressure-level)
-} GamepadPS3Axis;
-
-// Xbox360 USB Controller Buttons
-typedef enum {
- GAMEPAD_XBOX_BUTTON_A = 0,
- GAMEPAD_XBOX_BUTTON_B = 1,
- GAMEPAD_XBOX_BUTTON_X = 2,
- GAMEPAD_XBOX_BUTTON_Y = 3,
- GAMEPAD_XBOX_BUTTON_LB = 4,
- GAMEPAD_XBOX_BUTTON_RB = 5,
- GAMEPAD_XBOX_BUTTON_SELECT = 6,
- GAMEPAD_XBOX_BUTTON_START = 7,
- GAMEPAD_XBOX_BUTTON_HOME = 8,
- GAMEPAD_XBOX_BUTTON_UP = 10,
- GAMEPAD_XBOX_BUTTON_RIGHT = 11,
- GAMEPAD_XBOX_BUTTON_DOWN = 12,
- GAMEPAD_XBOX_BUTTON_LEFT = 13
-} GamepadXbox360Button;
-
-// Xbox360 USB Controller Axis,
-// NOTE: For Raspberry Pi, axis must be reconfigured
-typedef enum {
- GAMEPAD_XBOX_AXIS_LEFT_X = 0, // [-1..1] (left->right)
- GAMEPAD_XBOX_AXIS_LEFT_Y = 1, // [1..-1] (up->down)
- GAMEPAD_XBOX_AXIS_RIGHT_X = 2, // [-1..1] (left->right)
- GAMEPAD_XBOX_AXIS_RIGHT_Y = 3, // [1..-1] (up->down)
- GAMEPAD_XBOX_AXIS_LT = 4, // [-1..1] (pressure-level)
- GAMEPAD_XBOX_AXIS_RT = 5 // [-1..1] (pressure-level)
-} GamepadXbox360Axis;
-
-// Android Gamepad Controller (SNES CLASSIC)
-typedef enum {
- GAMEPAD_ANDROID_DPAD_UP = 19,
- GAMEPAD_ANDROID_DPAD_DOWN = 20,
- GAMEPAD_ANDROID_DPAD_LEFT = 21,
- GAMEPAD_ANDROID_DPAD_RIGHT = 22,
- GAMEPAD_ANDROID_DPAD_CENTER = 23,
- GAMEPAD_ANDROID_BUTTON_A = 96,
- GAMEPAD_ANDROID_BUTTON_B = 97,
- GAMEPAD_ANDROID_BUTTON_C = 98,
- GAMEPAD_ANDROID_BUTTON_X = 99,
- GAMEPAD_ANDROID_BUTTON_Y = 100,
- GAMEPAD_ANDROID_BUTTON_Z = 101,
- GAMEPAD_ANDROID_BUTTON_L1 = 102,
- GAMEPAD_ANDROID_BUTTON_R1 = 103,
- GAMEPAD_ANDROID_BUTTON_L2 = 104,
- GAMEPAD_ANDROID_BUTTON_R2 = 105
-} GamepadAndroid;
-
// Shader location point type
typedef enum {
LOC_VERTEX_POSITION = 0,
From c1f33eb817765ad801b2419d86457a6102b64032 Mon Sep 17 00:00:00 2001
From: Reece Mackie <20544390+Rover656@users.noreply.github.com>
Date: Sat, 27 Apr 2019 21:43:32 +0100
Subject: [PATCH 03/11] Line cleaning
---
src/raylib.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/raylib.h b/src/raylib.h
index 1b4a54340..b8347ef4e 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -631,7 +631,6 @@ typedef enum
GAMEPAD_BUTTON_LEFT_FACE_DOWN,
GAMEPAD_BUTTON_LEFT_FACE_LEFT,
-
//This is normally a DPAD
GAMEPAD_BUTTON_RIGHT_FACE_UP,
GAMEPAD_BUTTON_RIGHT_FACE_RIGHT,
@@ -657,6 +656,7 @@ typedef enum
typedef enum
{
GAMEPAD_AXIS_UNKNOWN = 0,
+
//Left stick
GAMEPAD_AXIS_LEFT_X,
GAMEPAD_AXIS_LEFT_Y,
From 7ca856f9b76e7e9eac49120d145f89c2fc639c38 Mon Sep 17 00:00:00 2001
From: Reece Mackie <20544390+Rover656@users.noreply.github.com>
Date: Sun, 28 Apr 2019 15:59:39 +0100
Subject: [PATCH 04/11] Formatting changes
---
src/core.c | 35 ++++++-----------------------------
src/raylib.h | 19 ++++++++++---------
2 files changed, 16 insertions(+), 38 deletions(-)
diff --git a/src/core.c b/src/core.c
index ec7586df4..4bb1e76fc 100644
--- a/src/core.c
+++ b/src/core.c
@@ -3110,34 +3110,11 @@ static GamepadButton GetGamepadButton(int button)
#endif
#if defined(PLATFORM_UWP)
- /*switch(button)
- {
- case 4: b = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break;
- case 8: b = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break;
- case 16: b = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break;
- case 32: b = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break;
-
- case 128: b = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break;
- case 256: b = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break;
- case 512: b = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break;
- case 64: b = GAMEPAD_BUTTON_LEFT_FACE_UP; break;
-
- case 1024: b = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break;
- case 2048: b = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break;
-
- case 4096: b = GAMEPAD_BUTTON_LEFT_THUMB; break;
- case 8192: b = GAMEPAD_BUTTON_RIGHT_THUMB; break;
-
- case 2: b = GAMEPAD_BUTTON_MIDDLE_LEFT;
- case 1: b = GAMEPAD_BUTTON_MIDDLE_RIGHT;
- }*/
- //Above might not be most efficient, so not doing it for now
b = button;
#endif
#if defined(PLATFORM_WEB)
- //TODO: TEST
- //https://www.w3.org/TR/gamepad/#gamepad-interface
+ // https://www.w3.org/TR/gamepad/#gamepad-interface
switch (button)
{
case 0: b = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break;
@@ -3178,11 +3155,11 @@ static GamepadAxis GetGamepadAxis(int axis)
#endif
#if defined(PLATFORM_UWP)
- a = axis; //UWP will provide the correct axis
+ a = axis; // UWP will provide the correct axis
#endif
#if defined(PLATFORM_WEB)
- //TODO: TEST
+ // https://www.w3.org/TR/gamepad/#gamepad-interface
switch(axis)
{
case 0: a = GAMEPAD_AXIS_LEFT_X;
@@ -3430,9 +3407,9 @@ static void PollInputEvents(void)
// Get current gamepad state
// NOTE: There is no callback available, so we get it manually
- //Get remapped buttons
+ // Get remapped buttons
GLFWgamepadstate state;
- glfwGetGamepadState(i, &state); //This remapps all gamepads so they work the same
+ glfwGetGamepadState(i, &state); // This remapps all gamepads so they have their buttons mapped like an xbox controller
const unsigned char *buttons = state.buttons;
for (int k = 0; (buttons != NULL) && (k < GLFW_GAMEPAD_BUTTON_DPAD_LEFT + 1) && (k < MAX_GAMEPAD_BUTTONS); k++)
@@ -3456,7 +3433,7 @@ static void PollInputEvents(void)
gamepadAxisState[i][axis] = axes[k];
}
- //Register buttons for 2nd triggers
+ // Register buttons for 2nd triggers (because GLFW doesn't count these as buttons but rather axis)
currentGamepadState[i][GAMEPAD_BUTTON_LEFT_TRIGGER_2] = (char)(gamepadAxisState[i][GAMEPAD_AXIS_LEFT_TRIGGER] > 0.1);
currentGamepadState[i][GAMEPAD_BUTTON_RIGHT_TRIGGER_2] = (char)(gamepadAxisState[i][GAMEPAD_AXIS_RIGHT_TRIGGER] > 0.1);
diff --git a/src/raylib.h b/src/raylib.h
index cf8543a27..3fb4ee6db 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -622,50 +622,51 @@ typedef enum {
// Gamepad Buttons
typedef enum
{
- //This is here just for error checking
+ // This is here just for error checking
GAMEPAD_BUTTON_UNKNOWN = 0,
- //This is normally ABXY/Circle, Triangle, Square, Cross. No support for 6 button controllers though..
+ // This is normally ABXY/Circle, Triangle, Square, Cross. No support for 6 button controllers though..
GAMEPAD_BUTTON_LEFT_FACE_UP,
GAMEPAD_BUTTON_LEFT_FACE_RIGHT,
GAMEPAD_BUTTON_LEFT_FACE_DOWN,
GAMEPAD_BUTTON_LEFT_FACE_LEFT,
- //This is normally a DPAD
+ // This is normally a DPAD
GAMEPAD_BUTTON_RIGHT_FACE_UP,
GAMEPAD_BUTTON_RIGHT_FACE_RIGHT,
GAMEPAD_BUTTON_RIGHT_FACE_DOWN,
GAMEPAD_BUTTON_RIGHT_FACE_LEFT,
- //Triggers
+ // Triggers
GAMEPAD_BUTTON_LEFT_TRIGGER_1,
GAMEPAD_BUTTON_LEFT_TRIGGER_2,
GAMEPAD_BUTTON_RIGHT_TRIGGER_1,
GAMEPAD_BUTTON_RIGHT_TRIGGER_2,
- //These are buttons in the center of the gamepad
+ // These are buttons in the center of the gamepad
GAMEPAD_BUTTON_MIDDLE_LEFT, //PS3 Select
GAMEPAD_BUTTON_MIDDLE, //PS Button/XBOX Button
GAMEPAD_BUTTON_MIDDLE_RIGHT, //PS3 Start
- //These are the joystick press in buttons
+ // These are the joystick press in buttons
GAMEPAD_BUTTON_LEFT_THUMB,
GAMEPAD_BUTTON_RIGHT_THUMB
} GamepadButton;
typedef enum
{
+ // This is here just for error checking
GAMEPAD_AXIS_UNKNOWN = 0,
- //Left stick
+ // Left stick
GAMEPAD_AXIS_LEFT_X,
GAMEPAD_AXIS_LEFT_Y,
- //Right stick
+ // Right stick
GAMEPAD_AXIS_RIGHT_X,
GAMEPAD_AXIS_RIGHT_Y,
- //Pressure levels
+ // Pressure levels for the back triggers
GAMEPAD_AXIS_LEFT_TRIGGER, // [1..-1] (pressure-level)
GAMEPAD_AXIS_RIGHT_TRIGGER // [1..-1] (pressure-level)
} GamepadAxis;
From 3244ec2a1d151dfd84e6145a9e9b4ce744cbc23e Mon Sep 17 00:00:00 2001
From: Reece Mackie <20544390+Rover656@users.noreply.github.com>
Date: Sun, 28 Apr 2019 16:03:23 +0100
Subject: [PATCH 05/11] Add another UWP comment for clarity
---
src/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core.c b/src/core.c
index 4bb1e76fc..5eed81c9b 100644
--- a/src/core.c
+++ b/src/core.c
@@ -3110,7 +3110,7 @@ static GamepadButton GetGamepadButton(int button)
#endif
#if defined(PLATFORM_UWP)
- b = button;
+ b = button; // UWP will provide the correct button
#endif
#if defined(PLATFORM_WEB)
From d42965b0b02247f9b2581d3b7ba6e9ea47ddfcd6 Mon Sep 17 00:00:00 2001
From: Reece Mackie <20544390+Rover656@users.noreply.github.com>
Date: Sun, 28 Apr 2019 16:05:45 +0100
Subject: [PATCH 06/11] Fix tabs
---
src/core.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/core.c b/src/core.c
index 5eed81c9b..fb1f4f1af 100644
--- a/src/core.c
+++ b/src/core.c
@@ -3324,9 +3324,9 @@ static void PollInputEvents(void)
{
if ((msg->paramInt0 < MAX_GAMEPADS) && (msg->paramInt1 < MAX_GAMEPAD_AXIS)) gamepadAxisState[msg->paramInt0][msg->paramInt1] = msg->paramFloat0;
- // Register buttons for 2nd triggers
- currentGamepadState[msg->paramInt0][GAMEPAD_BUTTON_LEFT_TRIGGER_2] = (char)(gamepadAxisState[msg->paramInt0][GAMEPAD_AXIS_LEFT_TRIGGER] > 0.1);
- currentGamepadState[msg->paramInt0][GAMEPAD_BUTTON_RIGHT_TRIGGER_2] = (char)(gamepadAxisState[msg->paramInt0][GAMEPAD_AXIS_RIGHT_TRIGGER] > 0.1);
+ // Register buttons for 2nd triggers
+ currentGamepadState[msg->paramInt0][GAMEPAD_BUTTON_LEFT_TRIGGER_2] = (char)(gamepadAxisState[msg->paramInt0][GAMEPAD_AXIS_LEFT_TRIGGER] > 0.1);
+ currentGamepadState[msg->paramInt0][GAMEPAD_BUTTON_RIGHT_TRIGGER_2] = (char)(gamepadAxisState[msg->paramInt0][GAMEPAD_AXIS_RIGHT_TRIGGER] > 0.1);
} break;
case UWP_MSG_SET_DISPLAY_DIMS:
{
From e69688437a33dbc15a2a7e143ad76e524184ff03 Mon Sep 17 00:00:00 2001
From: Reece Mackie <20544390+Rover656@users.noreply.github.com>
Date: Sun, 28 Apr 2019 16:06:56 +0100
Subject: [PATCH 07/11] Why does visual studio keep using tabs!!!
---
src/core.c | 114 ++++++++++++++++++++++++++---------------------------
1 file changed, 57 insertions(+), 57 deletions(-)
diff --git a/src/core.c b/src/core.c
index fb1f4f1af..1dc27050c 100644
--- a/src/core.c
+++ b/src/core.c
@@ -3083,93 +3083,93 @@ static bool GetMouseButtonStatus(int button)
static GamepadButton GetGamepadButton(int button)
{
- GamepadButton b = GAMEPAD_BUTTON_UNKNOWN;
+ GamepadButton b = GAMEPAD_BUTTON_UNKNOWN;
#if defined(PLATFORM_DESKTOP)
switch (button)
{
- case GLFW_GAMEPAD_BUTTON_Y: b = GAMEPAD_BUTTON_RIGHT_FACE_UP; break;
- case GLFW_GAMEPAD_BUTTON_B: b = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break;
- case GLFW_GAMEPAD_BUTTON_A: b = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break;
- case GLFW_GAMEPAD_BUTTON_X: b = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break;
+ case GLFW_GAMEPAD_BUTTON_Y: b = GAMEPAD_BUTTON_RIGHT_FACE_UP; break;
+ case GLFW_GAMEPAD_BUTTON_B: b = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break;
+ case GLFW_GAMEPAD_BUTTON_A: b = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break;
+ case GLFW_GAMEPAD_BUTTON_X: b = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break;
- case GLFW_GAMEPAD_BUTTON_LEFT_BUMPER: b = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break;
- case GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER: b = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break;
+ case GLFW_GAMEPAD_BUTTON_LEFT_BUMPER: b = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break;
+ case GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER: b = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break;
- case GLFW_GAMEPAD_BUTTON_BACK: b = GAMEPAD_BUTTON_MIDDLE_LEFT; break;
- case GLFW_GAMEPAD_BUTTON_GUIDE: b = GAMEPAD_BUTTON_MIDDLE; break;
- case GLFW_GAMEPAD_BUTTON_START: b = GAMEPAD_BUTTON_MIDDLE_RIGHT; break;
+ case GLFW_GAMEPAD_BUTTON_BACK: b = GAMEPAD_BUTTON_MIDDLE_LEFT; break;
+ case GLFW_GAMEPAD_BUTTON_GUIDE: b = GAMEPAD_BUTTON_MIDDLE; break;
+ case GLFW_GAMEPAD_BUTTON_START: b = GAMEPAD_BUTTON_MIDDLE_RIGHT; break;
- case GLFW_GAMEPAD_BUTTON_DPAD_UP: b = GAMEPAD_BUTTON_LEFT_FACE_UP; break;
- case GLFW_GAMEPAD_BUTTON_DPAD_RIGHT: b = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break;
- case GLFW_GAMEPAD_BUTTON_DPAD_DOWN: b = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break;
- case GLFW_GAMEPAD_BUTTON_DPAD_LEFT: b = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break;
+ case GLFW_GAMEPAD_BUTTON_DPAD_UP: b = GAMEPAD_BUTTON_LEFT_FACE_UP; break;
+ case GLFW_GAMEPAD_BUTTON_DPAD_RIGHT: b = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break;
+ case GLFW_GAMEPAD_BUTTON_DPAD_DOWN: b = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break;
+ case GLFW_GAMEPAD_BUTTON_DPAD_LEFT: b = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break;
- case GLFW_GAMEPAD_BUTTON_LEFT_THUMB: b = GAMEPAD_BUTTON_LEFT_THUMB; break;
- case GLFW_GAMEPAD_BUTTON_RIGHT_THUMB: b = GAMEPAD_BUTTON_RIGHT_THUMB; break;
+ case GLFW_GAMEPAD_BUTTON_LEFT_THUMB: b = GAMEPAD_BUTTON_LEFT_THUMB; break;
+ case GLFW_GAMEPAD_BUTTON_RIGHT_THUMB: b = GAMEPAD_BUTTON_RIGHT_THUMB; break;
}
#endif
#if defined(PLATFORM_UWP)
- b = button; // UWP will provide the correct button
+ b = button; // UWP will provide the correct button
#endif
#if defined(PLATFORM_WEB)
// https://www.w3.org/TR/gamepad/#gamepad-interface
switch (button)
{
- case 0: b = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break;
- case 1: b = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break;
- case 2: b = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break;
- case 3: b = GAMEPAD_BUTTON_RIGHT_FACE_UP; break;
- case 4: b = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break;
- case 5: b = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break;
- case 6: b = GAMEPAD_BUTTON_LEFT_TRIGGER_2; break;
- case 7: b = GAMEPAD_BUTTON_RIGHT_TRIGGER_2; break;
- case 8: b = GAMEPAD_BUTTON_MIDDLE_LEFT; break;
- case 9: b = GAMEPAD_BUTTON_MIDDLE_RIGHT; break;
- case 10: b = GAMEPAD_BUTTON_LEFT_THUMB; break;
- case 11: b = GAMEPAD_BUTTON_RIGHT_THUMB; break;
- case 12: b = GAMEPAD_BUTTON_LEFT_FACE_UP; break;
- case 13: b = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break;
- case 14: b = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break;
- case 15: b = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break;
+ case 0: b = GAMEPAD_BUTTON_RIGHT_FACE_DOWN; break;
+ case 1: b = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT; break;
+ case 2: b = GAMEPAD_BUTTON_RIGHT_FACE_LEFT; break;
+ case 3: b = GAMEPAD_BUTTON_RIGHT_FACE_UP; break;
+ case 4: b = GAMEPAD_BUTTON_LEFT_TRIGGER_1; break;
+ case 5: b = GAMEPAD_BUTTON_RIGHT_TRIGGER_1; break;
+ case 6: b = GAMEPAD_BUTTON_LEFT_TRIGGER_2; break;
+ case 7: b = GAMEPAD_BUTTON_RIGHT_TRIGGER_2; break;
+ case 8: b = GAMEPAD_BUTTON_MIDDLE_LEFT; break;
+ case 9: b = GAMEPAD_BUTTON_MIDDLE_RIGHT; break;
+ case 10: b = GAMEPAD_BUTTON_LEFT_THUMB; break;
+ case 11: b = GAMEPAD_BUTTON_RIGHT_THUMB; break;
+ case 12: b = GAMEPAD_BUTTON_LEFT_FACE_UP; break;
+ case 13: b = GAMEPAD_BUTTON_LEFT_FACE_DOWN; break;
+ case 14: b = GAMEPAD_BUTTON_LEFT_FACE_LEFT; break;
+ case 15: b = GAMEPAD_BUTTON_LEFT_FACE_RIGHT; break;
}
#endif
- return b;
+ return b;
}
static GamepadAxis GetGamepadAxis(int axis)
{
- GamepadAxis a = GAMEPAD_AXIS_UNKNOWN;
+ GamepadAxis a = GAMEPAD_AXIS_UNKNOWN;
#if defined(PLATFORM_DESKTOP)
switch(axis)
{
- case GLFW_GAMEPAD_AXIS_LEFT_X: a = GAMEPAD_AXIS_LEFT_X; break;
- case GLFW_GAMEPAD_AXIS_LEFT_Y: a = GAMEPAD_AXIS_LEFT_Y; break;
- case GLFW_GAMEPAD_AXIS_RIGHT_X: a = GAMEPAD_AXIS_RIGHT_X; break;
- case GLFW_GAMEPAD_AXIS_RIGHT_Y: a = GAMEPAD_AXIS_RIGHT_Y; break;
- case GLFW_GAMEPAD_AXIS_LEFT_TRIGGER: a = GAMEPAD_AXIS_LEFT_TRIGGER; break;
- case GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER: a = GAMEPAD_AXIS_RIGHT_TRIGGER; break;
+ case GLFW_GAMEPAD_AXIS_LEFT_X: a = GAMEPAD_AXIS_LEFT_X; break;
+ case GLFW_GAMEPAD_AXIS_LEFT_Y: a = GAMEPAD_AXIS_LEFT_Y; break;
+ case GLFW_GAMEPAD_AXIS_RIGHT_X: a = GAMEPAD_AXIS_RIGHT_X; break;
+ case GLFW_GAMEPAD_AXIS_RIGHT_Y: a = GAMEPAD_AXIS_RIGHT_Y; break;
+ case GLFW_GAMEPAD_AXIS_LEFT_TRIGGER: a = GAMEPAD_AXIS_LEFT_TRIGGER; break;
+ case GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER: a = GAMEPAD_AXIS_RIGHT_TRIGGER; break;
}
#endif
#if defined(PLATFORM_UWP)
- a = axis; // UWP will provide the correct axis
+ a = axis; // UWP will provide the correct axis
#endif
#if defined(PLATFORM_WEB)
- // https://www.w3.org/TR/gamepad/#gamepad-interface
+ // https://www.w3.org/TR/gamepad/#gamepad-interface
switch(axis)
{
- case 0: a = GAMEPAD_AXIS_LEFT_X;
- case 1: a = GAMEPAD_AXIS_LEFT_Y;
- case 2: a = GAMEPAD_AXIS_RIGHT_X;
- case 3: a = GAMEPAD_AXIS_RIGHT_X;
+ case 0: a = GAMEPAD_AXIS_LEFT_X;
+ case 1: a = GAMEPAD_AXIS_LEFT_Y;
+ case 2: a = GAMEPAD_AXIS_RIGHT_X;
+ case 3: a = GAMEPAD_AXIS_RIGHT_X;
}
#endif
- return a;
+ return a;
}
// Poll (store) all input events
@@ -3408,13 +3408,13 @@ static void PollInputEvents(void)
// Get current gamepad state
// NOTE: There is no callback available, so we get it manually
// Get remapped buttons
- GLFWgamepadstate state;
- glfwGetGamepadState(i, &state); // This remapps all gamepads so they have their buttons mapped like an xbox controller
- const unsigned char *buttons = state.buttons;
+ GLFWgamepadstate state;
+ glfwGetGamepadState(i, &state); // This remapps all gamepads so they have their buttons mapped like an xbox controller
+ const unsigned char *buttons = state.buttons;
for (int k = 0; (buttons != NULL) && (k < GLFW_GAMEPAD_BUTTON_DPAD_LEFT + 1) && (k < MAX_GAMEPAD_BUTTONS); k++)
{
- const GamepadButton button = GetGamepadButton(k);
+ const GamepadButton button = GetGamepadButton(k);
if (buttons[k] == GLFW_PRESS)
{
@@ -3429,13 +3429,13 @@ static void PollInputEvents(void)
for (int k = 0; (axes != NULL) && (k < GLFW_GAMEPAD_AXIS_LAST + 1) && (k < MAX_GAMEPAD_AXIS); k++)
{
- const GamepadAxis axis = GetGamepadAxis(k);
+ const GamepadAxis axis = GetGamepadAxis(k);
gamepadAxisState[i][axis] = axes[k];
}
// Register buttons for 2nd triggers (because GLFW doesn't count these as buttons but rather axis)
- currentGamepadState[i][GAMEPAD_BUTTON_LEFT_TRIGGER_2] = (char)(gamepadAxisState[i][GAMEPAD_AXIS_LEFT_TRIGGER] > 0.1);
- currentGamepadState[i][GAMEPAD_BUTTON_RIGHT_TRIGGER_2] = (char)(gamepadAxisState[i][GAMEPAD_AXIS_RIGHT_TRIGGER] > 0.1);
+ currentGamepadState[i][GAMEPAD_BUTTON_LEFT_TRIGGER_2] = (char)(gamepadAxisState[i][GAMEPAD_AXIS_LEFT_TRIGGER] > 0.1);
+ currentGamepadState[i][GAMEPAD_BUTTON_RIGHT_TRIGGER_2] = (char)(gamepadAxisState[i][GAMEPAD_AXIS_RIGHT_TRIGGER] > 0.1);
gamepadAxisCount = GLFW_GAMEPAD_AXIS_LAST;
}
@@ -3471,7 +3471,7 @@ static void PollInputEvents(void)
// Register buttons data for every connected gamepad
for (int j = 0; (j < gamepadState.numButtons) && (j < MAX_GAMEPAD_BUTTONS); j++)
{
- const GamepadButton button = GetGamepadButton(j);
+ const GamepadButton button = GetGamepadButton(j);
if (gamepadState.digitalButton[j] == 1)
{
currentGamepadState[i][button] = 1;
@@ -3485,7 +3485,7 @@ static void PollInputEvents(void)
// Register axis data for every connected gamepad
for (int j = 0; (j < gamepadState.numAxes) && (j < MAX_GAMEPAD_AXIS); j++)
{
- const GamepadAxis axis = GetGamepadAxis(k);
+ const GamepadAxis axis = GetGamepadAxis(k);
gamepadAxisState[i][axis] = gamepadState.axis[j];
}
From 86eba249708a0bcfee5ba665c1fbb1d2050113ec Mon Sep 17 00:00:00 2001
From: Reece Mackie <20544390+Rover656@users.noreply.github.com>
Date: Sun, 28 Apr 2019 16:08:07 +0100
Subject: [PATCH 08/11] This is dumb...
---
src/raylib.h | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/src/raylib.h b/src/raylib.h
index 3fb4ee6db..dfbebf90f 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -627,21 +627,21 @@ typedef enum
// This is normally ABXY/Circle, Triangle, Square, Cross. No support for 6 button controllers though..
GAMEPAD_BUTTON_LEFT_FACE_UP,
- GAMEPAD_BUTTON_LEFT_FACE_RIGHT,
- GAMEPAD_BUTTON_LEFT_FACE_DOWN,
+ GAMEPAD_BUTTON_LEFT_FACE_RIGHT,
+ GAMEPAD_BUTTON_LEFT_FACE_DOWN,
GAMEPAD_BUTTON_LEFT_FACE_LEFT,
// This is normally a DPAD
- GAMEPAD_BUTTON_RIGHT_FACE_UP,
- GAMEPAD_BUTTON_RIGHT_FACE_RIGHT,
- GAMEPAD_BUTTON_RIGHT_FACE_DOWN,
- GAMEPAD_BUTTON_RIGHT_FACE_LEFT,
+ GAMEPAD_BUTTON_RIGHT_FACE_UP,
+ GAMEPAD_BUTTON_RIGHT_FACE_RIGHT,
+ GAMEPAD_BUTTON_RIGHT_FACE_DOWN,
+ GAMEPAD_BUTTON_RIGHT_FACE_LEFT,
// Triggers
GAMEPAD_BUTTON_LEFT_TRIGGER_1,
GAMEPAD_BUTTON_LEFT_TRIGGER_2,
- GAMEPAD_BUTTON_RIGHT_TRIGGER_1,
- GAMEPAD_BUTTON_RIGHT_TRIGGER_2,
+ GAMEPAD_BUTTON_RIGHT_TRIGGER_1,
+ GAMEPAD_BUTTON_RIGHT_TRIGGER_2,
// These are buttons in the center of the gamepad
GAMEPAD_BUTTON_MIDDLE_LEFT, //PS3 Select
@@ -650,25 +650,25 @@ typedef enum
// These are the joystick press in buttons
GAMEPAD_BUTTON_LEFT_THUMB,
- GAMEPAD_BUTTON_RIGHT_THUMB
+ GAMEPAD_BUTTON_RIGHT_THUMB
} GamepadButton;
typedef enum
{
- // This is here just for error checking
+ // This is here just for error checking
GAMEPAD_AXIS_UNKNOWN = 0,
// Left stick
- GAMEPAD_AXIS_LEFT_X,
- GAMEPAD_AXIS_LEFT_Y,
+ GAMEPAD_AXIS_LEFT_X,
+ GAMEPAD_AXIS_LEFT_Y,
// Right stick
- GAMEPAD_AXIS_RIGHT_X,
- GAMEPAD_AXIS_RIGHT_Y,
+ GAMEPAD_AXIS_RIGHT_X,
+ GAMEPAD_AXIS_RIGHT_Y,
// Pressure levels for the back triggers
- GAMEPAD_AXIS_LEFT_TRIGGER, // [1..-1] (pressure-level)
- GAMEPAD_AXIS_RIGHT_TRIGGER // [1..-1] (pressure-level)
+ GAMEPAD_AXIS_LEFT_TRIGGER, // [1..-1] (pressure-level)
+ GAMEPAD_AXIS_RIGHT_TRIGGER // [1..-1] (pressure-level)
} GamepadAxis;
// Shader location point type
From 948a4427040d1156f4cb5fbe3c170a85592fbb94 Mon Sep 17 00:00:00 2001
From: Reece Mackie <20544390+Rover656@users.noreply.github.com>
Date: Sun, 28 Apr 2019 16:20:14 +0100
Subject: [PATCH 09/11] Update gamepad example to use new enums
---
examples/core/core_input_gamepad.c | 80 +++++++++++++++---------------
1 file changed, 40 insertions(+), 40 deletions(-)
diff --git a/examples/core/core_input_gamepad.c b/examples/core/core_input_gamepad.c
index 64520a47c..12d2dea5e 100644
--- a/examples/core/core_input_gamepad.c
+++ b/examples/core/core_input_gamepad.c
@@ -66,93 +66,93 @@ int main()
DrawTexture(texXboxPad, 0, 0, DARKGRAY);
// Draw buttons: xbox home
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_HOME)) DrawCircle(394, 89, 19, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_MIDDLE)) DrawCircle(394, 89, 19, RED);
// Draw buttons: basic
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_START)) DrawCircle(436, 150, 9, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_SELECT)) DrawCircle(352, 150, 9, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_X)) DrawCircle(501, 151, 15, BLUE);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_A)) DrawCircle(536, 187, 15, LIME);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_B)) DrawCircle(572, 151, 15, MAROON);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_Y)) DrawCircle(536, 115, 15, GOLD);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_MIDDLE_RIGHT)) DrawCircle(436, 150, 9, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_MIDDLE_LEFT)) DrawCircle(352, 150, 9, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_LEFT)) DrawCircle(501, 151, 15, BLUE);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) DrawCircle(536, 187, 15, LIME);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) DrawCircle(572, 151, 15, MAROON);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_UP)) DrawCircle(536, 115, 15, GOLD);
// Draw buttons: d-pad
DrawRectangle(317, 202, 19, 71, BLACK);
DrawRectangle(293, 228, 69, 19, BLACK);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_UP)) DrawRectangle(317, 202, 19, 26, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_DOWN)) DrawRectangle(317, 202 + 45, 19, 26, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_LEFT)) DrawRectangle(292, 228, 25, 19, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_RIGHT)) DrawRectangle(292 + 44, 228, 26, 19, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_UP)) DrawRectangle(317, 202, 19, 26, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_DOWN)) DrawRectangle(317, 202 + 45, 19, 26, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_LEFT)) DrawRectangle(292, 228, 25, 19, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_RIGHT)) DrawRectangle(292 + 44, 228, 26, 19, RED);
// Draw buttons: left-right back
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_LB)) DrawCircle(259, 61, 20, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_RB)) DrawCircle(536, 61, 20, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_TRIGGER_1)) DrawCircle(259, 61, 20, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_TRIGGER_1)) DrawCircle(536, 61, 20, RED);
// Draw axis: left joystick
DrawCircle(259, 152, 39, BLACK);
DrawCircle(259, 152, 34, LIGHTGRAY);
- DrawCircle(259 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_LEFT_X)*20),
- 152 - (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_LEFT_Y)*20), 25, BLACK);
+ DrawCircle(259 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_X)*20),
+ 152 - (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_Y)*20), 25, BLACK);
// Draw axis: right joystick
DrawCircle(461, 237, 38, BLACK);
DrawCircle(461, 237, 33, LIGHTGRAY);
- DrawCircle(461 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_RIGHT_X)*20),
- 237 - (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_RIGHT_Y)*20), 25, BLACK);
+ DrawCircle(461 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_RIGHT_X)*20),
+ 237 - (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_RIGHT_Y)*20), 25, BLACK);
// Draw axis: left-right triggers
DrawRectangle(170, 30, 15, 70, GRAY);
DrawRectangle(604, 30, 15, 70, GRAY);
- DrawRectangle(170, 30, 15, (((1.0f + GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_LT))/2.0f)*70), RED);
- DrawRectangle(604, 30, 15, (((1.0f + GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_RT))/2.0f)*70), RED);
+ DrawRectangle(170, 30, 15, (((1.0f + GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_TRIGGER))/2.0f)*70), RED);
+ DrawRectangle(604, 30, 15, (((1.0f + GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_RIGHT_TRIGGER))/2.0f)*70), RED);
- //DrawText(FormatText("Xbox axis LT: %02.02f", GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_LT)), 10, 40, 10, BLACK);
- //DrawText(FormatText("Xbox axis RT: %02.02f", GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_RT)), 10, 60, 10, BLACK);
+ //DrawText(FormatText("Xbox axis LT: %02.02f", GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_TRIGGER)), 10, 40, 10, BLACK);
+ //DrawText(FormatText("Xbox axis RT: %02.02f", GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_RIGHT_TRIGGER)), 10, 60, 10, BLACK);
}
else if (IsGamepadName(GAMEPAD_PLAYER1, PS3_NAME_ID))
{
DrawTexture(texPs3Pad, 0, 0, DARKGRAY);
// Draw buttons: ps
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_PS)) DrawCircle(396, 222, 13, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_MIDDLE)) DrawCircle(396, 222, 13, RED);
// Draw buttons: basic
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_SELECT)) DrawRectangle(328, 170, 32, 13, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_START)) DrawTriangle((Vector2){ 436, 168 }, (Vector2){ 436, 185 }, (Vector2){ 464, 177 }, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_TRIANGLE)) DrawCircle(557, 144, 13, LIME);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_CIRCLE)) DrawCircle(586, 173, 13, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_CROSS)) DrawCircle(557, 203, 13, VIOLET);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_SQUARE)) DrawCircle(527, 173, 13, PINK);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_MIDDLE_LEFT)) DrawRectangle(328, 170, 32, 13, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_MIDDLE_RIGHT)) DrawTriangle((Vector2){ 436, 168 }, (Vector2){ 436, 185 }, (Vector2){ 464, 177 }, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_UP)) DrawCircle(557, 144, 13, LIME);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) DrawCircle(586, 173, 13, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) DrawCircle(557, 203, 13, VIOLET);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_LEFT)) DrawCircle(527, 173, 13, PINK);
// Draw buttons: d-pad
DrawRectangle(225, 132, 24, 84, BLACK);
DrawRectangle(195, 161, 84, 25, BLACK);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_UP)) DrawRectangle(225, 132, 24, 29, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_DOWN)) DrawRectangle(225, 132 + 54, 24, 30, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_LEFT)) DrawRectangle(195, 161, 30, 25, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_RIGHT)) DrawRectangle(195 + 54, 161, 30, 25, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_UP)) DrawRectangle(225, 132, 24, 29, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_DOWN)) DrawRectangle(225, 132 + 54, 24, 30, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_LEFT)) DrawRectangle(195, 161, 30, 25, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_RIGHT)) DrawRectangle(195 + 54, 161, 30, 25, RED);
// Draw buttons: left-right back buttons
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_L1)) DrawCircle(239, 82, 20, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_R1)) DrawCircle(557, 82, 20, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_TRIGGER_1)) DrawCircle(239, 82, 20, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_TRIGGER_1)) DrawCircle(557, 82, 20, RED);
// Draw axis: left joystick
DrawCircle(319, 255, 35, BLACK);
DrawCircle(319, 255, 31, LIGHTGRAY);
- DrawCircle(319 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_PS3_AXIS_LEFT_X)*20),
- 255 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_PS3_AXIS_LEFT_Y)*20), 25, BLACK);
+ DrawCircle(319 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_X)*20),
+ 255 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_Y)*20), 25, BLACK);
// Draw axis: right joystick
DrawCircle(475, 255, 35, BLACK);
DrawCircle(475, 255, 31, LIGHTGRAY);
- DrawCircle(475 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_PS3_AXIS_RIGHT_X)*20),
- 255 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_PS3_AXIS_RIGHT_Y)*20), 25, BLACK);
+ DrawCircle(475 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_RIGHT_X)*20),
+ 255 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_RIGHT_Y)*20), 25, BLACK);
// Draw axis: left-right triggers
DrawRectangle(169, 48, 15, 70, GRAY);
DrawRectangle(611, 48, 15, 70, GRAY);
- DrawRectangle(169, 48, 15, (((1.0f - GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_PS3_AXIS_L2))/2.0f)*70), RED);
- DrawRectangle(611, 48, 15, (((1.0f - GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_PS3_AXIS_R2))/2.0f)*70), RED);
+ DrawRectangle(169, 48, 15, (((1.0f - GetGamepadAxisMovement(GAMEPAD_PLAYER1, GLFW_GAMEPAD_AXIS_LEFT_TRIGGER))/2.0f)*70), RED);
+ DrawRectangle(611, 48, 15, (((1.0f - GetGamepadAxisMovement(GAMEPAD_PLAYER1, GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER))/2.0f)*70), RED);
}
else
{
From f36ba6a2f405ffc6a85cc4d7aeda286e73e5b517 Mon Sep 17 00:00:00 2001
From: Reece Mackie <20544390+Rover656@users.noreply.github.com>
Date: Sun, 28 Apr 2019 16:32:05 +0100
Subject: [PATCH 10/11] Damn, made a mistake
---
examples/core/core_input_gamepad.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/examples/core/core_input_gamepad.c b/examples/core/core_input_gamepad.c
index 12d2dea5e..e8a1c0511 100644
--- a/examples/core/core_input_gamepad.c
+++ b/examples/core/core_input_gamepad.c
@@ -151,8 +151,8 @@ int main()
// Draw axis: left-right triggers
DrawRectangle(169, 48, 15, 70, GRAY);
DrawRectangle(611, 48, 15, 70, GRAY);
- DrawRectangle(169, 48, 15, (((1.0f - GetGamepadAxisMovement(GAMEPAD_PLAYER1, GLFW_GAMEPAD_AXIS_LEFT_TRIGGER))/2.0f)*70), RED);
- DrawRectangle(611, 48, 15, (((1.0f - GetGamepadAxisMovement(GAMEPAD_PLAYER1, GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER))/2.0f)*70), RED);
+ DrawRectangle(169, 48, 15, (((1.0f - GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_TRIGGER))/2.0f)*70), RED);
+ DrawRectangle(611, 48, 15, (((1.0f - GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_RIGHT_TRIGGER))/2.0f)*70), RED);
}
else
{
From a51f3be38fe8dea4b3220e4071ebd826a2090c1c Mon Sep 17 00:00:00 2001
From: Reece Mackie <20544390+Rover656@users.noreply.github.com>
Date: Sun, 28 Apr 2019 16:53:20 +0100
Subject: [PATCH 11/11] Fix web
---
src/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core.c b/src/core.c
index 1dc27050c..8bff82458 100644
--- a/src/core.c
+++ b/src/core.c
@@ -3485,7 +3485,7 @@ static void PollInputEvents(void)
// Register axis data for every connected gamepad
for (int j = 0; (j < gamepadState.numAxes) && (j < MAX_GAMEPAD_AXIS); j++)
{
- const GamepadAxis axis = GetGamepadAxis(k);
+ const GamepadAxis axis = GetGamepadAxis(j);
gamepadAxisState[i][axis] = gamepadState.axis[j];
}