|
|
@ -58,12 +58,12 @@ |
|
|
|
#endif |
|
|
|
|
|
|
|
#include <stdio.h> // Standard input / output lib |
|
|
|
#include <stdlib.h> // Declares malloc() and free() for memory management, rand(), atexit() |
|
|
|
#include <stdint.h> // Required for typedef unsigned long long int uint64_t, used by hi-res timer |
|
|
|
#include <time.h> // Useful to initialize random seed - Android/RPI hi-res timer (NOTE: Linux only!) |
|
|
|
#include <math.h> // Math related functions, tan() used to set perspective |
|
|
|
#include <string.h> // String function definitions, memset() |
|
|
|
cp">#include <errno.h> // Macros for reporting and retrieving error conditions through error codes |
|
|
|
#include <stdlib.h> // Required for: malloc(), free(), rand(), atexit() |
|
|
|
#include <stdint.h> // Required for: typedef unsigned long long int uint64_t, used by hi-res timer |
|
|
|
#include <time.h> // Required for: time() - Android/RPI hi-res timer (NOTE: Linux only!) |
|
|
|
#include <math.h> // Required for: tan() [Used in Begin3dMode() to set perspective] |
|
|
|
#include <string.h> // Required for: strcmp() |
|
|
|
o">//#include <errno.h> // Macros for reporting and retrieving error conditions through error codes |
|
|
|
|
|
|
|
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) |
|
|
|
//#define GLFW_INCLUDE_NONE // Disable the standard OpenGL header inclusion on GLFW3 |
|
|
@ -222,6 +222,7 @@ static char currentKeyState[512] = { 0 }; // Registers current frame key state |
|
|
|
|
|
|
|
static int lastKeyPressed = -1; // Register last key pressed |
|
|
|
static int lastGamepadButtonPressed = -1; // Register last gamepad button pressed |
|
|
|
static int gamepadAxisCount = 0; // Register number of available gamepad axis |
|
|
|
|
|
|
|
static Vector2 mousePosition; // Mouse position on screen |
|
|
|
static Vector2 touchPosition[MAX_TOUCH_POINTS]; // Touch position on screen |
|
|
@ -1168,17 +1169,36 @@ bool IsGamepadAvailable(int gamepad) |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
// Check gamepad name (if available) |
|
|
|
bool IsGamepadName(int gamepad, const char *name) |
|
|
|
{ |
|
|
|
bool result = false; |
|
|
|
const char *gamepadName = NULL; |
|
|
|
|
|
|
|
if (gamepadReady[gamepad]) gamepadName = GetGamepadName(gamepad); |
|
|
|
|
|
|
|
if ((name != NULL) && (gamepadName != NULL)) result = (strcmp(name, gamepadName) == 0); |
|
|
|
|
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
// Return gamepad internal name id |
|
|
|
const char *GetGamepadName(int gamepad) |
|
|
|
{ |
|
|
|
#if defined(PLATFORM_DESKTOP) |
|
|
|
if (glfwJoystickPresent(gamepad) == 1) return glfwGetJoystickName(gamepad); |
|
|
|
if (gamepadReady[gamepad]) return glfwGetJoystickName(gamepad); |
|
|
|
else return NULL; |
|
|
|
#else |
|
|
|
return NULL; |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|
// Return gamepad axis count |
|
|
|
int GetGamepadAxisCount(int gamepad) |
|
|
|
{ |
|
|
|
return gamepadAxisCount; |
|
|
|
} |
|
|
|
|
|
|
|
// Return axis movement vector for a gamepad |
|
|
|
float GetGamepadAxisMovement(int gamepad, int axis) |
|
|
|
{ |
|
|
@ -1921,6 +1941,7 @@ static void PollInputEvents(void) |
|
|
|
|
|
|
|
// Reset last gamepad button pressed registered |
|
|
|
lastGamepadButtonPressed = -1; |
|
|
|
gamepadAxisCount = 0; |
|
|
|
|
|
|
|
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) |
|
|
|
// Mouse input polling |
|
|
@ -1943,13 +1964,19 @@ static void PollInputEvents(void) |
|
|
|
previousMouseWheelY = currentMouseWheelY; |
|
|
|
currentMouseWheelY = 0; |
|
|
|
|
|
|
|
// Check if gamepads are ready |
|
|
|
// NOTE: We do it here in case of disconection |
|
|
|
for (int i = 0; i < MAX_GAMEPADS; i++) |
|
|
|
{ |
|
|
|
if (glfwJoystickPresent(i)) gamepadReady[i] = true; |
|
|
|
else gamepadReady[i] = false; |
|
|
|
} |
|
|
|
|
|
|
|
// Register gamepads buttons events |
|
|
|
for (int i = 0; i < MAX_GAMEPADS; i++) |
|
|
|
{ |
|
|
|
if (glfwJoystickPresent(i)) // Check if gamepad is available |
|
|
|
if (gamepadReady[i]) // Check if gamepad is available |
|
|
|
{ |
|
|
|
gamepadReady[i] = true; |
|
|
|
|
|
|
|
// Register previous gamepad states |
|
|
|
for (int k = 0; k < MAX_GAMEPAD_BUTTONS; k++) previousGamepadState[i][k] = currentGamepadState[i][k]; |
|
|
|
|
|
|
@ -1980,8 +2007,9 @@ static void PollInputEvents(void) |
|
|
|
{ |
|
|
|
gamepadAxisState[i][k] = axes[k]; |
|
|
|
} |
|
|
|
|
|
|
|
gamepadAxisCount = axisCount; |
|
|
|
} |
|
|
|
else gamepadReady[i] = false; |
|
|
|
} |
|
|
|
|
|
|
|
glfwPollEvents(); // Register keyboard/mouse events (callbacks)... and window events! |
|
|
|