|
|
@ -423,6 +423,8 @@ typedef struct CoreData { |
|
|
|
Vector2 offset; // Mouse offset |
|
|
|
Vector2 scale; // Mouse scaling |
|
|
|
|
|
|
|
MouseCursor cursor; // Tracks current mouse cursor |
|
|
|
void* standardCursors[10]; // Opaque pointers to GLFW cursors |
|
|
|
bool cursorHidden; // Track if cursor is hidden |
|
|
|
bool cursorOnScreen; // Tracks if cursor is inside client area |
|
|
|
|
|
|
@ -653,8 +655,9 @@ void InitWindow(int width, int height, const char *title) |
|
|
|
// Initialize required global values different than 0 |
|
|
|
CORE.Input.Keyboard.exitKey = KEY_ESCAPE; |
|
|
|
CORE.Input.Mouse.scale = (Vector2){ 1.0f, 1.0f }; |
|
|
|
CORE.Input.Mouse.cursor = MOUSE_CURSOR_ARROW; |
|
|
|
CORE.Input.Gamepad.lastButtonPressed = -1; |
|
|
|
|
|
|
|
|
|
|
|
#if defined(PLATFORM_UWP) |
|
|
|
// The axis count is 6 (2 thumbsticks and left and right trigger) |
|
|
|
CORE.Input.Gamepad.axisCount = 6; |
|
|
@ -753,6 +756,26 @@ void InitWindow(int width, int height, const char *title) |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(PLATFORM_DESKTOP) |
|
|
|
// Initialize GLFW's standard cursors |
|
|
|
const int shapes[] = { |
|
|
|
0x00036001, // MOUSE_CURSOR_ARROW |
|
|
|
0x00036002, // MOUSE_CURSOR_IBEAM |
|
|
|
0x00036003, // MOUSE_CURSOR_CROSSHAIR |
|
|
|
0x00036004, // MOUSE_CURSOR_POINTING_HAND |
|
|
|
0x00036005, // MOUSE_CURSOR_RESIZE_EW |
|
|
|
0x00036006, // MOUSE_CURSOR_RESIZE_NS |
|
|
|
0x00036007, // MOUSE_CURSOR_RESIZE_NWSE |
|
|
|
0x00036008, // MOUSE_CURSOR_RESIZE_NESW |
|
|
|
0x00036009, // MOUSE_CURSOR_RESIZE_ALL |
|
|
|
0x0003600A, // MOUSE_CURSOR_NOT_ALLOWED |
|
|
|
}; |
|
|
|
for (int i = 0; i < sizeof(CORE.Input.Mouse.standardCursors) / sizeof(CORE.Input.Mouse.standardCursors[0]); i += 1) |
|
|
|
{ |
|
|
|
CORE.Input.Mouse.standardCursors[i] = glfwCreateStandardCursor(shapes[i]); |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(PLATFORM_WEB) |
|
|
|
// Detect fullscreen change events |
|
|
|
emscripten_set_fullscreenchange_callback("#canvas", NULL, 1, EmscriptenFullscreenChangeCallback); |
|
|
@ -797,6 +820,11 @@ void CloseWindow(void) |
|
|
|
|
|
|
|
rlglClose(); // De-init rlgl |
|
|
|
|
|
|
|
#if defined(PLATFORM_DESKTOP) |
|
|
|
for (int i = 0; i < sizeof(CORE.Input.Mouse.standardCursors) / sizeof(CORE.Input.Mouse.standardCursors[0]); i += 1) |
|
|
|
glfwDestroyCursor(CORE.Input.Mouse.standardCursors[i]); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) |
|
|
|
glfwDestroyWindow(CORE.Window.handle); |
|
|
|
glfwTerminate(); |
|
|
@ -2733,6 +2761,29 @@ float GetMouseWheelMove(void) |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|
// Returns mouse cursor |
|
|
|
MouseCursor GetMouseCursor(void) |
|
|
|
{ |
|
|
|
return CORE.Input.Mouse.cursor; |
|
|
|
} |
|
|
|
|
|
|
|
// Set mouse cursor |
|
|
|
// NOTE: This is a no-op on platforms other than PLATFORM_DESKTOP |
|
|
|
void SetMouseCursor(MouseCursor cursor) |
|
|
|
{ |
|
|
|
#if defined(PLATFORM_DESKTOP) |
|
|
|
CORE.Input.Mouse.cursor = cursor; |
|
|
|
if (cursor == MOUSE_CURSOR_DEFAULT) |
|
|
|
{ |
|
|
|
glfwSetCursor(CORE.Window.handle, NULL); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
glfwSetCursor(CORE.Window.handle, CORE.Input.Mouse.standardCursors[cursor]); |
|
|
|
} |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|
// Returns touch position X for touch point 0 (relative to screen size) |
|
|
|
int GetTouchX(void) |
|
|
|
{ |
|
|
|