summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMichaelFiber <[email protected]>2023-10-14 16:51:35 -0400
committerGitHub <[email protected]>2023-10-14 22:51:35 +0200
commit18bedbd0952c27b0eb8bc5df0df4acf589cef181 (patch)
tree7a1d58bab8ce516593fdc033176fd896b0a59ee5
parent781f7175308f0b708393b1135657aa191ca2b508 (diff)
downloadraylib-18bedbd0952c27b0eb8bc5df0df4acf589cef181.tar.gz
raylib-18bedbd0952c27b0eb8bc5df0df4acf589cef181.zip
[core] Change axisCount to be an array (#3421)
* Update `PLATFORM_DRM` implementation of `GetGamepadAxisCount` * Update * Update `PLATFORM_DRM` implementation of `GetGamepadName` * Add example to test gamepad info functions Fix typo * Update new gamepad info example * Move axis count update out of GamepadThread - race condition * Remove pointless if statement * Start integrating stuff from the mikesinput lib * Add more logging * Add semicolon * Add forgotten static * More fixes * Update axisCount to be array * More debugging * Add forgotten index to ready check * Add path logging * Missing parenthesis * Add missing slash * Fix axis count being reset to 0 * Fix missing paren * Test polling joystick button events * Major updates * Fix missing array index * Fix another missing array index * Update example * dumb logging * Wrong constant for ev.code handling * More dumb logging * Remove some logging * Add FPS to gamepad info example and try for max FPS * tweak * Revert example * Add fps back * Clean up after merge * Switch axisCount to be an array
-rw-r--r--examples/core/core_input_gamepad_info.c20
-rw-r--r--src/rcore.c2
-rw-r--r--src/rcore.h2
-rw-r--r--src/rcore_android.c2
-rw-r--r--src/rcore_desktop.c4
-rw-r--r--src/rcore_drm.c4
-rw-r--r--src/rcore_template.c2
-rw-r--r--src/rcore_web.c4
8 files changed, 27 insertions, 13 deletions
diff --git a/examples/core/core_input_gamepad_info.c b/examples/core/core_input_gamepad_info.c
index 84a687cd..55f0354b 100644
--- a/examples/core/core_input_gamepad_info.c
+++ b/examples/core/core_input_gamepad_info.c
@@ -41,15 +41,29 @@ int main(void)
ClearBackground(RAYWHITE);
- for (int i = 0; i < 4; i++) // by default rcore.h has a MAX_GAMEPADS of 4 so mimmic that here.
+ for (int i = 0; i < 4; i++) // by default rcore.h has a MAX_GAMEPADS of 4 so mimmic that here.
{
if (IsGamepadAvailable(i))
{
- DrawText(TextFormat("Gamepad:\n\tName: %s\n\tAxes: %d", GetGamepadName(i), GetGamepadAxisCount(i)), 10, y, 20, BLACK);
- y += 40;
+ DrawText(TextFormat("Gamepad name: %s", GetGamepadName(i)), 10, y, 20, BLACK);
+ y += 30;
+ DrawText(TextFormat("\tAxis count: %d", GetGamepadAxisCount(i)), 10, y, 20, BLACK);
+ y += 30;
+ for (int axis = 0; axis < GetGamepadAxisCount(i); axis++)
+ {
+ DrawText(TextFormat("\tAxis %d = %f", axis, GetGamepadAxisMovement(i, axis)), 10, y, 20, BLACK);
+ y += 30;
+ }
+ for (int button = 0; button < 32; button++)
+ {
+ DrawText(TextFormat("\tButton %d = %d", button, IsGamepadButtonDown(i, button)), 10, y, 20, BLACK);
+ y += 30;
+ }
}
}
+ DrawFPS(GetScreenWidth() - 100, 100);
+
EndDrawing();
}
diff --git a/src/rcore.c b/src/rcore.c
index e6015b33..f94731f9 100644
--- a/src/rcore.c
+++ b/src/rcore.c
@@ -2168,7 +2168,7 @@ int GetGamepadButtonPressed(void)
// Get gamepad axis count
int GetGamepadAxisCount(int gamepad)
{
- return CORE.Input.Gamepad.axisCount;
+ return CORE.Input.Gamepad.axisCount[gamepad];
}
// Get axis movement vector for a gamepad
diff --git a/src/rcore.h b/src/rcore.h
index dbff6ab1..1127585a 100644
--- a/src/rcore.h
+++ b/src/rcore.h
@@ -179,7 +179,7 @@ typedef struct CoreData {
} Touch;
struct {
int lastButtonPressed; // Register last gamepad button pressed
- int axisCount; // Register number of available gamepad axis
+ int axisCount[MAX_GAMEPADS]; // Register number of available gamepad axis
bool ready[MAX_GAMEPADS]; // Flag to know if gamepad is ready
char name[MAX_GAMEPADS][64]; // Gamepad name holder
char currentButtonState[MAX_GAMEPADS][MAX_GAMEPAD_BUTTONS]; // Current gamepad buttons state
diff --git a/src/rcore_android.c b/src/rcore_android.c
index 4dc0e26c..98ce64a6 100644
--- a/src/rcore_android.c
+++ b/src/rcore_android.c
@@ -566,7 +566,7 @@ void PollInputEvents(void)
// Reset last gamepad button/axis registered state
CORE.Input.Gamepad.lastButtonPressed = 0; // GAMEPAD_BUTTON_UNKNOWN
- CORE.Input.Gamepad.axisCount = 0;
+ //CORE.Input.Gamepad.axisCount = 0;
// Register previous touch states
for (int i = 0; i < MAX_TOUCH_POINTS; i++) CORE.Input.Touch.previousTouchState[i] = CORE.Input.Touch.currentTouchState[i];
diff --git a/src/rcore_desktop.c b/src/rcore_desktop.c
index fe5a02aa..4039bbd8 100644
--- a/src/rcore_desktop.c
+++ b/src/rcore_desktop.c
@@ -1234,7 +1234,7 @@ void PollInputEvents(void)
// Reset last gamepad button/axis registered state
CORE.Input.Gamepad.lastButtonPressed = 0; // GAMEPAD_BUTTON_UNKNOWN
- CORE.Input.Gamepad.axisCount = 0;
+ //CORE.Input.Gamepad.axisCount = 0;
// Keyboard/Mouse input polling (automatically managed by GLFW3 through callback)
// Register previous keys states
@@ -1341,7 +1341,7 @@ void PollInputEvents(void)
CORE.Input.Gamepad.currentButtonState[i][GAMEPAD_BUTTON_LEFT_TRIGGER_2] = (char)(CORE.Input.Gamepad.axisState[i][GAMEPAD_AXIS_LEFT_TRIGGER] > 0.1f);
CORE.Input.Gamepad.currentButtonState[i][GAMEPAD_BUTTON_RIGHT_TRIGGER_2] = (char)(CORE.Input.Gamepad.axisState[i][GAMEPAD_AXIS_RIGHT_TRIGGER] > 0.1f);
- CORE.Input.Gamepad.axisCount = GLFW_GAMEPAD_AXIS_LAST + 1;
+ CORE.Input.Gamepad.axisCount[i] = GLFW_GAMEPAD_AXIS_LAST + 1;
}
}
diff --git a/src/rcore_drm.c b/src/rcore_drm.c
index 3f03bfa1..1fb83c8f 100644
--- a/src/rcore_drm.c
+++ b/src/rcore_drm.c
@@ -655,7 +655,7 @@ void PollInputEvents(void)
// Reset last gamepad button/axis registered state
CORE.Input.Gamepad.lastButtonPressed = 0; // GAMEPAD_BUTTON_UNKNOWN
- CORE.Input.Gamepad.axisCount = 0;
+ //CORE.Input.Gamepad.axisCount = 0;
// Register previous keys states
for (int i = 0; i < MAX_KEYBOARD_KEYS; i++)
@@ -1847,7 +1847,7 @@ static void InitGamepad(void)
}
ioctl(platform.gamepadStreamFd[i], JSIOCGNAME(64), &CORE.Input.Gamepad.name[i]);
- ioctl(platform.gamepadStreamFd[i], JSIOCGAXES, &CORE.Input.Gamepad.axisCount);
+ ioctl(platform.gamepadStreamFd[i], JSIOCGAXES, &CORE.Input.Gamepad.axisCount[i]);
}
}
}
diff --git a/src/rcore_template.c b/src/rcore_template.c
index 89be8ac0..4d2db9d3 100644
--- a/src/rcore_template.c
+++ b/src/rcore_template.c
@@ -569,7 +569,7 @@ void PollInputEvents(void)
// Reset last gamepad button/axis registered state
CORE.Input.Gamepad.lastButtonPressed = 0; // GAMEPAD_BUTTON_UNKNOWN
- CORE.Input.Gamepad.axisCount = 0;
+ //CORE.Input.Gamepad.axisCount = 0;
// Register previous touch states
for (int i = 0; i < MAX_TOUCH_POINTS; i++) CORE.Input.Touch.previousTouchState[i] = CORE.Input.Touch.currentTouchState[i];
diff --git a/src/rcore_web.c b/src/rcore_web.c
index 9e4ce5b9..f8e1e5b2 100644
--- a/src/rcore_web.c
+++ b/src/rcore_web.c
@@ -705,7 +705,7 @@ void PollInputEvents(void)
// Reset last gamepad button/axis registered state
CORE.Input.Gamepad.lastButtonPressed = 0; // GAMEPAD_BUTTON_UNKNOWN
- CORE.Input.Gamepad.axisCount = 0;
+ //CORE.Input.Gamepad.axisCount = 0;
// Keyboard/Mouse input polling (automatically managed by GLFW3 through callback)
// Register previous keys states
@@ -799,7 +799,7 @@ void PollInputEvents(void)
CORE.Input.Gamepad.axisState[i][j] = gamepadState.axis[j];
}
- CORE.Input.Gamepad.axisCount = gamepadState.numAxes;
+ CORE.Input.Gamepad.axisCount[i] = gamepadState.numAxes;
}
}
}