Merge branch 'master' of https://github.com/raysan5/raylib into pure
This commit is contained in:
commit
22e595d1a2
|
|
@ -9,6 +9,7 @@ Some people ported raylib to other languages in the form of bindings or wrappers
|
||||||
| [raylib](https://github.com/raysan5/raylib) | **5.0** | [C/C++](https://en.wikipedia.org/wiki/C_(programming_language)) | Zlib |
|
| [raylib](https://github.com/raysan5/raylib) | **5.0** | [C/C++](https://en.wikipedia.org/wiki/C_(programming_language)) | Zlib |
|
||||||
| [raylib-beef](https://github.com/Starpelly/raylib-beef) | **5.0** | [Beef](https://www.beeflang.org) | MIT |
|
| [raylib-beef](https://github.com/Starpelly/raylib-beef) | **5.0** | [Beef](https://www.beeflang.org) | MIT |
|
||||||
| [raylib-boo](https://github.com/Rabios/raylib-boo) | 3.7 | [Boo](http://boo-language.github.io) | MIT |
|
| [raylib-boo](https://github.com/Rabios/raylib-boo) | 3.7 | [Boo](http://boo-language.github.io) | MIT |
|
||||||
|
| [raybit](https://github.com/Alex-Velez/raybit) | 3.7 | [Brainfuck](https://en.wikipedia.org/wiki/Brainfuck) | MIT |
|
||||||
| [Raylib-cs](https://github.com/ChrisDill/Raylib-cs) | **5.0** | [C#](https://en.wikipedia.org/wiki/C_Sharp_(programming_language)) | Zlib |
|
| [Raylib-cs](https://github.com/ChrisDill/Raylib-cs) | **5.0** | [C#](https://en.wikipedia.org/wiki/C_Sharp_(programming_language)) | Zlib |
|
||||||
| [Raylib-CsLo](https://github.com/NotNotTech/Raylib-CsLo) | 4.2 | [C#](https://en.wikipedia.org/wiki/C_Sharp_(programming_language)) | MPL-2.0 |
|
| [Raylib-CsLo](https://github.com/NotNotTech/Raylib-CsLo) | 4.2 | [C#](https://en.wikipedia.org/wiki/C_Sharp_(programming_language)) | MPL-2.0 |
|
||||||
| [Raylib-CSharp-Vinculum](https://github.com/ZeroElectric/Raylib-CSharp-Vinculum) | **5.0** | [C#](https://en.wikipedia.org/wiki/C_Sharp_(programming_language)) | MPL-2.0 |
|
| [Raylib-CSharp-Vinculum](https://github.com/ZeroElectric/Raylib-CSharp-Vinculum) | **5.0** | [C#](https://en.wikipedia.org/wiki/C_Sharp_(programming_language)) | MPL-2.0 |
|
||||||
|
|
@ -21,7 +22,7 @@ Some people ported raylib to other languages in the form of bindings or wrappers
|
||||||
| [ray-cyber](https://github.com/fubark/ray-cyber) | **5.0** | [Cyber](https://cyberscript.dev) | MIT |
|
| [ray-cyber](https://github.com/fubark/ray-cyber) | **5.0** | [Cyber](https://cyberscript.dev) | MIT |
|
||||||
| [dart-raylib](https://gitlab.com/wolfenrain/dart-raylib) | 4.0 | [Dart](https://dart.dev) | MIT |
|
| [dart-raylib](https://gitlab.com/wolfenrain/dart-raylib) | 4.0 | [Dart](https://dart.dev) | MIT |
|
||||||
| [bindbc-raylib3](https://github.com/o3o/bindbc-raylib3) | **5.0** | [D](https://dlang.org) | BSL-1.0 |
|
| [bindbc-raylib3](https://github.com/o3o/bindbc-raylib3) | **5.0** | [D](https://dlang.org) | BSL-1.0 |
|
||||||
| [dray](https://github.com/redthing1/dray) | 4.2 | [D](https://dlang.org) | Apache-2.0 |
|
| [dray](https://github.com/redthing1/dray) | **5.0** | [D](https://dlang.org) | Apache-2.0 |
|
||||||
| [raylib-d](https://github.com/schveiguy/raylib-d) | **5.0** | [D](https://dlang.org) | Zlib |
|
| [raylib-d](https://github.com/schveiguy/raylib-d) | **5.0** | [D](https://dlang.org) | Zlib |
|
||||||
| [rayex](https://github.com/shiryel/rayex) | 3.7 | [elixir](https://elixir-lang.org) | Apache-2.0 |
|
| [rayex](https://github.com/shiryel/rayex) | 3.7 | [elixir](https://elixir-lang.org) | Apache-2.0 |
|
||||||
| [raylib-factor](https://github.com/factor/factor/blob/master/extra/raylib/raylib.factor) | 4.5 | [Factor](https://factorcode.org) | BSD |
|
| [raylib-factor](https://github.com/factor/factor/blob/master/extra/raylib/raylib.factor) | 4.5 | [Factor](https://factorcode.org) | BSD |
|
||||||
|
|
@ -149,7 +150,7 @@ These are older raylib bindings that are more than 2 versions old or have not be
|
||||||
| [ray.mod](https://github.com/bmx-ng/ray.mod) | 3.0 | [BlitzMax](https://blitzmax.org) |
|
| [ray.mod](https://github.com/bmx-ng/ray.mod) | 3.0 | [BlitzMax](https://blitzmax.org) |
|
||||||
| [raylib-mosaic](https://github.com/pluckyporcupine/raylib-mosaic) | 3.0 | [Mosaic](https://github.com/sal55/langs/tree/master/Mosaic) |
|
| [raylib-mosaic](https://github.com/pluckyporcupine/raylib-mosaic) | 3.0 | [Mosaic](https://github.com/sal55/langs/tree/master/Mosaic) |
|
||||||
| [raylib-xdpw](https://github.com/vtereshkov/raylib-xdpw) | 2.6 | [XD Pascal](https://github.com/vtereshkov/xdpw) |
|
| [raylib-xdpw](https://github.com/vtereshkov/raylib-xdpw) | 2.6 | [XD Pascal](https://github.com/vtereshkov/xdpw) |
|
||||||
| [raylib-carp](https://github.com/pluckyporcupine/raylib-carp) | 3.0 | [Carp](https://github.com/carp-lang/Carp) |
|
| [raylib-carp](https://github.com/sacredbirdman/raylib-carp) | 3.0 | [Carp](https://github.com/carp-lang/Carp) |
|
||||||
| [raylib-fb](https://github.com/IchMagBier/raylib-fb) | 3.0 | [FreeBasic](https://www.freebasic.net) |
|
| [raylib-fb](https://github.com/IchMagBier/raylib-fb) | 3.0 | [FreeBasic](https://www.freebasic.net) |
|
||||||
| [raylib-purebasic](https://github.com/D-a-n-i-l-o/raylib-purebasic) | 3.0 | [PureBasic](https://www.purebasic.com) |
|
| [raylib-purebasic](https://github.com/D-a-n-i-l-o/raylib-purebasic) | 3.0 | [PureBasic](https://www.purebasic.com) |
|
||||||
| [raylib-ats2](https://github.com/mephistopheles-8/raylib-ats2) | 3.0 | [ATS2](http://www.ats-lang.org) |
|
| [raylib-ats2](https://github.com/mephistopheles-8/raylib-ats2) | 3.0 | [ATS2](http://www.ats-lang.org) |
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ endfunction()
|
||||||
|
|
||||||
if(${CUSTOMIZE_BUILD})
|
if(${CUSTOMIZE_BUILD})
|
||||||
target_compile_definitions("raylib" PRIVATE EXTERNAL_CONFIG_FLAGS)
|
target_compile_definitions("raylib" PRIVATE EXTERNAL_CONFIG_FLAGS)
|
||||||
define_if("raylib" USE_AUDIO)
|
|
||||||
|
|
||||||
foreach(FLAG IN LISTS CONFIG_HEADER_FLAGS)
|
foreach(FLAG IN LISTS CONFIG_HEADER_FLAGS)
|
||||||
string(REGEX MATCH "([^=]+)=(.+)" _ ${FLAG})
|
string(REGEX MATCH "([^=]+)=(.+)" _ ${FLAG})
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
#version 120
|
#version 120
|
||||||
|
|
||||||
precision mediump float;
|
|
||||||
|
|
||||||
#define MAX_LIGHTS 4
|
#define MAX_LIGHTS 4
|
||||||
#define LIGHT_DIRECTIONAL 0
|
#define LIGHT_DIRECTIONAL 0
|
||||||
#define LIGHT_POINT 1
|
#define LIGHT_POINT 1
|
||||||
|
|
@ -17,12 +15,12 @@ struct Light {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Input vertex attributes (from vertex shader)
|
// Input vertex attributes (from vertex shader)
|
||||||
varying in vec3 fragPosition;
|
varying vec3 fragPosition;
|
||||||
varying in vec2 fragTexCoord;
|
varying vec2 fragTexCoord;
|
||||||
varying in vec4 fragColor;
|
varying vec4 fragColor;
|
||||||
varying in vec3 fragNormal;
|
varying vec3 fragNormal;
|
||||||
varying in vec4 shadowPos;
|
varying vec4 shadowPos;
|
||||||
varying in mat3 TBN;
|
varying mat3 TBN;
|
||||||
|
|
||||||
|
|
||||||
// Input uniform values
|
// Input uniform values
|
||||||
|
|
@ -153,4 +151,4 @@ void main()
|
||||||
|
|
||||||
gl_FragColor = vec4(color,1.0);
|
gl_FragColor = vec4(color,1.0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
#version 120
|
#version 120
|
||||||
|
|
||||||
precision mediump float;
|
|
||||||
|
|
||||||
// This shader is based on the basic lighting shader
|
// This shader is based on the basic lighting shader
|
||||||
// This only supports one light, which is directional, and it (of course) supports shadows
|
// This only supports one light, which is directional, and it (of course) supports shadows
|
||||||
|
|
||||||
// Input vertex attributes (from vertex shader)
|
// Input vertex attributes (from vertex shader)
|
||||||
varying in vec3 fragPosition;
|
varying vec3 fragPosition;
|
||||||
varying in vec2 fragTexCoord;
|
varying vec2 fragTexCoord;
|
||||||
//varying in vec4 fragColor;
|
//varying in vec4 fragColor;
|
||||||
varying in vec3 fragNormal;
|
varying vec3 fragNormal;
|
||||||
|
|
||||||
// Input uniform values
|
// Input uniform values
|
||||||
uniform sampler2D texture0;
|
uniform sampler2D texture0;
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
{
|
{
|
||||||
"name": "RAYLIB_VERSION",
|
"name": "RAYLIB_VERSION",
|
||||||
"type": "STRING",
|
"type": "STRING",
|
||||||
"value": "5.5",
|
"value": "5.5-dev",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ return {
|
||||||
{
|
{
|
||||||
name = "RAYLIB_VERSION",
|
name = "RAYLIB_VERSION",
|
||||||
type = "STRING",
|
type = "STRING",
|
||||||
value = "5.5",
|
value = "5.5-dev",
|
||||||
description = ""
|
description = ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ Define 004: RAYLIB_VERSION_PATCH
|
||||||
Define 005: RAYLIB_VERSION
|
Define 005: RAYLIB_VERSION
|
||||||
Name: RAYLIB_VERSION
|
Name: RAYLIB_VERSION
|
||||||
Type: STRING
|
Type: STRING
|
||||||
Value: "5.5"
|
Value: "5.5-dev"
|
||||||
Description:
|
Description:
|
||||||
Define 006: __declspec(x)
|
Define 006: __declspec(x)
|
||||||
Name: __declspec(x)
|
Name: __declspec(x)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<Define name="RAYLIB_VERSION_MAJOR" type="INT" value="5" desc="" />
|
<Define name="RAYLIB_VERSION_MAJOR" type="INT" value="5" desc="" />
|
||||||
<Define name="RAYLIB_VERSION_MINOR" type="INT" value="5" desc="" />
|
<Define name="RAYLIB_VERSION_MINOR" type="INT" value="5" desc="" />
|
||||||
<Define name="RAYLIB_VERSION_PATCH" type="INT" value="0" desc="" />
|
<Define name="RAYLIB_VERSION_PATCH" type="INT" value="0" desc="" />
|
||||||
<Define name="RAYLIB_VERSION" type="STRING" value="5.5" desc="" />
|
<Define name="RAYLIB_VERSION" type="STRING" value="5.5-dev" desc="" />
|
||||||
<Define name="__declspec(x)" type="MACRO" value="__attribute__((x))" desc="" />
|
<Define name="__declspec(x)" type="MACRO" value="__attribute__((x))" desc="" />
|
||||||
<Define name="RLAPI" type="UNKNOWN" value="__declspec(dllexport)" desc="We are building the library as a Win32 shared library (.dll)" />
|
<Define name="RLAPI" type="UNKNOWN" value="__declspec(dllexport)" desc="We are building the library as a Win32 shared library (.dll)" />
|
||||||
<Define name="PI" type="FLOAT" value="3.14159265358979323846" desc="" />
|
<Define name="PI" type="FLOAT" value="3.14159265358979323846" desc="" />
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ set(raylib_public_headers
|
||||||
|
|
||||||
# Sources to be compiled
|
# Sources to be compiled
|
||||||
set(raylib_sources
|
set(raylib_sources
|
||||||
|
raudio.c
|
||||||
rcore.c
|
rcore.c
|
||||||
rmodels.c
|
rmodels.c
|
||||||
rshapes.c
|
rshapes.c
|
||||||
|
|
@ -47,14 +48,12 @@ endif ()
|
||||||
# Produces a variable LIBS_PRIVATE that will be used later
|
# Produces a variable LIBS_PRIVATE that will be used later
|
||||||
include(LibraryConfigurations)
|
include(LibraryConfigurations)
|
||||||
|
|
||||||
if (USE_AUDIO)
|
if (SUPPORT_MODULE_RAUDIO)
|
||||||
MESSAGE(STATUS "Audio Backend: miniaudio")
|
MESSAGE(STATUS "Audio Backend: miniaudio")
|
||||||
list(APPEND raylib_sources raudio.c)
|
|
||||||
else ()
|
else ()
|
||||||
MESSAGE(STATUS "Audio Backend: None (-DUSE_AUDIO=OFF)")
|
MESSAGE(STATUS "Audio Backend: None (-DCUSTOMIZE_BUILD=ON -DSUPPORT_MODULE_RAUDIO=OFF)")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
add_library(raylib ${raylib_sources} ${raylib_public_headers})
|
add_library(raylib ${raylib_sources} ${raylib_public_headers})
|
||||||
|
|
||||||
if (NOT BUILD_SHARED_LIBS)
|
if (NOT BUILD_SHARED_LIBS)
|
||||||
|
|
|
||||||
|
|
@ -117,31 +117,29 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
||||||
|
|
||||||
raylib.addLibraryPath(.{ .cwd_relative = "/usr/lib" });
|
raylib.addLibraryPath(.{ .cwd_relative = "/usr/lib" });
|
||||||
raylib.addIncludePath(.{ .cwd_relative = "/usr/include" });
|
raylib.addIncludePath(.{ .cwd_relative = "/usr/include" });
|
||||||
|
if (options.linux_display_backend == .X11 or options.linux_display_backend == .Both) {
|
||||||
|
|
||||||
switch (options.linux_display_backend) {
|
|
||||||
.X11 => {
|
|
||||||
raylib.defineCMacro("_GLFW_X11", null);
|
raylib.defineCMacro("_GLFW_X11", null);
|
||||||
raylib.linkSystemLibrary("X11");
|
raylib.linkSystemLibrary("X11");
|
||||||
},
|
|
||||||
.Wayland => {
|
|
||||||
raylib.defineCMacro("_GLFW_WAYLAND", null);
|
|
||||||
raylib.linkSystemLibrary("wayland-client");
|
|
||||||
raylib.linkSystemLibrary("wayland-cursor");
|
|
||||||
raylib.linkSystemLibrary("wayland-egl");
|
|
||||||
raylib.linkSystemLibrary("xkbcommon");
|
|
||||||
raylib.addIncludePath(b.path("src"));
|
|
||||||
waylandGenerate(b, raylib, "wayland.xml", "wayland-client-protocol");
|
|
||||||
waylandGenerate(b, raylib, "xdg-shell.xml", "xdg-shell-client-protocol");
|
|
||||||
waylandGenerate(b, raylib, "xdg-decoration-unstable-v1.xml", "xdg-decoration-unstable-v1-client-protocol");
|
|
||||||
waylandGenerate(b, raylib, "viewporter.xml", "viewporter-client-protocol");
|
|
||||||
waylandGenerate(b, raylib, "relative-pointer-unstable-v1.xml", "relative-pointer-unstable-v1-client-protocol");
|
|
||||||
waylandGenerate(b, raylib, "pointer-constraints-unstable-v1.xml", "pointer-constraints-unstable-v1-client-protocol");
|
|
||||||
waylandGenerate(b, raylib, "fractional-scale-v1.xml", "fractional-scale-v1-client-protocol");
|
|
||||||
waylandGenerate(b, raylib, "xdg-activation-v1.xml", "xdg-activation-v1-client-protocol");
|
|
||||||
waylandGenerate(b, raylib, "idle-inhibit-unstable-v1.xml", "idle-inhibit-unstable-v1-client-protocol");
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (options.linux_display_backend == .Wayland or options.linux_display_backend == .Both) {
|
||||||
|
raylib.defineCMacro("_GLFW_WAYLAND", null);
|
||||||
|
raylib.linkSystemLibrary("wayland-client");
|
||||||
|
raylib.linkSystemLibrary("wayland-cursor");
|
||||||
|
raylib.linkSystemLibrary("wayland-egl");
|
||||||
|
raylib.linkSystemLibrary("xkbcommon");
|
||||||
|
raylib.addIncludePath(b.path("src"));
|
||||||
|
waylandGenerate(b, raylib, "wayland.xml", "wayland-client-protocol");
|
||||||
|
waylandGenerate(b, raylib, "xdg-shell.xml", "xdg-shell-client-protocol");
|
||||||
|
waylandGenerate(b, raylib, "xdg-decoration-unstable-v1.xml", "xdg-decoration-unstable-v1-client-protocol");
|
||||||
|
waylandGenerate(b, raylib, "viewporter.xml", "viewporter-client-protocol");
|
||||||
|
waylandGenerate(b, raylib, "relative-pointer-unstable-v1.xml", "relative-pointer-unstable-v1-client-protocol");
|
||||||
|
waylandGenerate(b, raylib, "pointer-constraints-unstable-v1.xml", "pointer-constraints-unstable-v1-client-protocol");
|
||||||
|
waylandGenerate(b, raylib, "fractional-scale-v1.xml", "fractional-scale-v1-client-protocol");
|
||||||
|
waylandGenerate(b, raylib, "xdg-activation-v1.xml", "xdg-activation-v1-client-protocol");
|
||||||
|
waylandGenerate(b, raylib, "idle-inhibit-unstable-v1.xml", "idle-inhibit-unstable-v1-client-protocol");
|
||||||
|
}
|
||||||
raylib.defineCMacro("PLATFORM_DESKTOP", null);
|
raylib.defineCMacro("PLATFORM_DESKTOP", null);
|
||||||
} else {
|
} else {
|
||||||
if (options.opengl_version == .auto) {
|
if (options.opengl_version == .auto) {
|
||||||
|
|
@ -253,7 +251,7 @@ pub const Options = struct {
|
||||||
raygui: bool = false,
|
raygui: bool = false,
|
||||||
platform_drm: bool = false,
|
platform_drm: bool = false,
|
||||||
shared: bool = false,
|
shared: bool = false,
|
||||||
linux_display_backend: LinuxDisplayBackend = .X11,
|
linux_display_backend: LinuxDisplayBackend = .Both,
|
||||||
opengl_version: OpenglVersion = .auto,
|
opengl_version: OpenglVersion = .auto,
|
||||||
|
|
||||||
raygui_dependency_name: []const u8 = "raygui",
|
raygui_dependency_name: []const u8 = "raygui",
|
||||||
|
|
@ -284,6 +282,7 @@ pub const OpenglVersion = enum {
|
||||||
pub const LinuxDisplayBackend = enum {
|
pub const LinuxDisplayBackend = enum {
|
||||||
X11,
|
X11,
|
||||||
Wayland,
|
Wayland,
|
||||||
|
Both,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn build(b: *std.Build) !void {
|
pub fn build(b: *std.Build) !void {
|
||||||
|
|
|
||||||
2
src/external/miniaudio.h
vendored
2
src/external/miniaudio.h
vendored
|
|
@ -21473,7 +21473,9 @@ static ma_result ma_context_get_MMDevice__wasapi(ma_context* pContext, ma_device
|
||||||
MA_ASSERT(pContext != NULL);
|
MA_ASSERT(pContext != NULL);
|
||||||
MA_ASSERT(ppMMDevice != NULL);
|
MA_ASSERT(ppMMDevice != NULL);
|
||||||
|
|
||||||
|
ma_CoInitializeEx(pContext, NULL, MA_COINIT_VALUE);
|
||||||
hr = ma_CoCreateInstance(pContext, &MA_CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, &MA_IID_IMMDeviceEnumerator, (void**)&pDeviceEnumerator);
|
hr = ma_CoCreateInstance(pContext, &MA_CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, &MA_IID_IMMDeviceEnumerator, (void**)&pDeviceEnumerator);
|
||||||
|
ma_CoUninitialize(pContext);
|
||||||
if (FAILED(hr)) {
|
if (FAILED(hr)) {
|
||||||
ma_log_postf(ma_context_get_log(pContext), MA_LOG_LEVEL_ERROR, "[WASAPI] Failed to create IMMDeviceEnumerator.\n");
|
ma_log_postf(ma_context_get_log(pContext), MA_LOG_LEVEL_ERROR, "[WASAPI] Failed to create IMMDeviceEnumerator.\n");
|
||||||
return ma_result_from_HRESULT(hr);
|
return ma_result_from_HRESULT(hr);
|
||||||
|
|
|
||||||
|
|
@ -632,6 +632,13 @@ void SetMouseCursor(int cursor)
|
||||||
TRACELOG(LOG_WARNING, "SetMouseCursor() not implemented on target platform");
|
TRACELOG(LOG_WARNING, "SetMouseCursor() not implemented on target platform");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get physical key name.
|
||||||
|
const char *GetKeyName(int key)
|
||||||
|
{
|
||||||
|
TRACELOG(LOG_WARNING, "GetKeyName() not implemented on target platform");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
// Register all input events
|
// Register all input events
|
||||||
void PollInputEvents(void)
|
void PollInputEvents(void)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1075,6 +1075,12 @@ void SetMouseCursor(int cursor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get physical key name.
|
||||||
|
const char *GetKeyName(int key)
|
||||||
|
{
|
||||||
|
return glfwGetKeyName(key, glfwGetKeyScancode(key));
|
||||||
|
}
|
||||||
|
|
||||||
// Register all input events
|
// Register all input events
|
||||||
void PollInputEvents(void)
|
void PollInputEvents(void)
|
||||||
{
|
{
|
||||||
|
|
@ -1617,7 +1623,11 @@ int InitPlatform(void)
|
||||||
CORE.Storage.basePath = GetWorkingDirectory();
|
CORE.Storage.basePath = GetWorkingDirectory();
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
char* glfwPlatform = "";
|
#if defined(__NetBSD__)
|
||||||
|
// Workaround for NetBSD
|
||||||
|
char *glfwPlatform = "X11";
|
||||||
|
#else
|
||||||
|
char *glfwPlatform = "";
|
||||||
switch (glfwGetPlatform())
|
switch (glfwGetPlatform())
|
||||||
{
|
{
|
||||||
case GLFW_PLATFORM_WIN32: glfwPlatform = "Win32"; break;
|
case GLFW_PLATFORM_WIN32: glfwPlatform = "Win32"; break;
|
||||||
|
|
@ -1626,8 +1636,8 @@ int InitPlatform(void)
|
||||||
case GLFW_PLATFORM_X11: glfwPlatform = "X11"; break;
|
case GLFW_PLATFORM_X11: glfwPlatform = "X11"; break;
|
||||||
case GLFW_PLATFORM_NULL: glfwPlatform = "Null"; break;
|
case GLFW_PLATFORM_NULL: glfwPlatform = "Null"; break;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
TRACELOG(LOG_INFO, "GLFW platform: %s", glfwPlatform);
|
|
||||||
TRACELOG(LOG_INFO, "PLATFORM: DESKTOP (GLFW): Initialized successfully");
|
TRACELOG(LOG_INFO, "PLATFORM: DESKTOP (GLFW): Initialized successfully");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -1664,23 +1674,9 @@ static void WindowSizeCallback(GLFWwindow *window, int width, int height)
|
||||||
if (IsWindowFullscreen()) return;
|
if (IsWindowFullscreen()) return;
|
||||||
|
|
||||||
// Set current screen size
|
// Set current screen size
|
||||||
#if defined(__APPLE__)
|
|
||||||
CORE.Window.screen.width = width;
|
CORE.Window.screen.width = width;
|
||||||
CORE.Window.screen.height = height;
|
CORE.Window.screen.height = height;
|
||||||
#else
|
|
||||||
if ((CORE.Window.flags & FLAG_WINDOW_HIGHDPI) > 0)
|
|
||||||
{
|
|
||||||
Vector2 windowScaleDPI = GetWindowScaleDPI();
|
|
||||||
|
|
||||||
CORE.Window.screen.width = (unsigned int)(width/windowScaleDPI.x);
|
|
||||||
CORE.Window.screen.height = (unsigned int)(height/windowScaleDPI.y);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CORE.Window.screen.width = width;
|
|
||||||
CORE.Window.screen.height = height;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// NOTE: Postprocessing texture is not scaled to new size
|
// NOTE: Postprocessing texture is not scaled to new size
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -47,56 +47,55 @@
|
||||||
**********************************************************************************************/
|
**********************************************************************************************/
|
||||||
|
|
||||||
#ifdef GRAPHICS_API_OPENGL_ES2
|
#ifdef GRAPHICS_API_OPENGL_ES2
|
||||||
#define RGFW_OPENGL_ES2
|
#define RGFW_OPENGL_ES2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void ShowCursor(void);
|
void ShowCursor(void);
|
||||||
void CloseWindow(void);
|
void CloseWindow(void);
|
||||||
|
|
||||||
#ifdef __linux__
|
#if defined(__linux__)
|
||||||
#define _INPUT_EVENT_CODES_H
|
#define _INPUT_EVENT_CODES_H
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__unix__) || defined(__linux__)
|
#if defined(__unix__) || defined(__linux__)
|
||||||
#define _XTYPEDEF_FONT
|
#define _XTYPEDEF_FONT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define RGFW_IMPLEMENTATION
|
#define RGFW_IMPLEMENTATION
|
||||||
|
|
||||||
#if defined(__WIN32) || defined(__WIN64)
|
#if defined(__WIN32) || defined(__WIN64)
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#define Rectangle rectangle_win32
|
#define Rectangle rectangle_win32
|
||||||
#define CloseWindow CloseWindow_win32
|
#define CloseWindow CloseWindow_win32
|
||||||
#define ShowCursor __imp_ShowCursor
|
#define ShowCursor __imp_ShowCursor
|
||||||
#define _APISETSTRING_
|
#define _APISETSTRING_
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#if defined(__APPLE__)
|
||||||
#define Point NSPOINT
|
#define Point NSPOINT
|
||||||
#define Size NSSIZE
|
#define Size NSSIZE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#if defined(_MSC_VER)
|
||||||
__declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int CodePage, unsigned long dwFlags, const char* lpMultiByteStr, int cbMultiByte, wchar_t* lpWideCharStr, int cchWideChar);
|
__declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int CodePage, unsigned long dwFlags, const char *lpMultiByteStr, int cbMultiByte, wchar_t *lpWideCharStr, int cchWideChar);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "../external/RGFW.h"
|
#include "../external/RGFW.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(__WIN32) || defined(__WIN64)
|
#if defined(__WIN32) || defined(__WIN64)
|
||||||
#undef DrawText
|
#undef DrawText
|
||||||
#undef ShowCursor
|
#undef ShowCursor
|
||||||
#undef CloseWindow
|
#undef CloseWindow
|
||||||
#undef Rectangle
|
#undef Rectangle
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#if defined(__APPLE__)
|
||||||
#undef Point
|
#undef Point
|
||||||
#undef Size
|
#undef Size
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
#include <string.h> // Required for: strcmp()
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
// Types and Structures Definition
|
// Types and Structures Definition
|
||||||
|
|
@ -110,7 +109,9 @@ typedef struct {
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
extern CoreData CORE; // Global CORE state context
|
extern CoreData CORE; // Global CORE state context
|
||||||
|
|
||||||
static PlatformData platform = { NULL }; // Platform specific
|
static PlatformData platform = { NULL }; // Platform specific
|
||||||
|
|
||||||
|
static bool RGFW_disableCursor = false;
|
||||||
|
|
||||||
static const unsigned short keyMappingRGFW[] = {
|
static const unsigned short keyMappingRGFW[] = {
|
||||||
[RGFW_KEY_NULL] = KEY_NULL,
|
[RGFW_KEY_NULL] = KEY_NULL,
|
||||||
|
|
@ -242,6 +243,7 @@ bool WindowShouldClose(void)
|
||||||
|
|
||||||
// Toggle fullscreen mode
|
// Toggle fullscreen mode
|
||||||
void ToggleFullscreen(void)
|
void ToggleFullscreen(void)
|
||||||
|
{
|
||||||
{
|
{
|
||||||
RGFW_window_maximize(platform.window);
|
RGFW_window_maximize(platform.window);
|
||||||
ToggleBorderlessWindowed();
|
ToggleBorderlessWindowed();
|
||||||
|
|
@ -250,7 +252,8 @@ void ToggleFullscreen(void)
|
||||||
// Toggle borderless windowed mode
|
// Toggle borderless windowed mode
|
||||||
void ToggleBorderlessWindowed(void)
|
void ToggleBorderlessWindowed(void)
|
||||||
{
|
{
|
||||||
if (platform.window != NULL) {
|
if (platform.window != NULL)
|
||||||
|
{
|
||||||
RGFW_window_setBorder(platform.window, CORE.Window.flags & FLAG_WINDOW_UNDECORATED);
|
RGFW_window_setBorder(platform.window, CORE.Window.flags & FLAG_WINDOW_UNDECORATED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -569,8 +572,7 @@ int GetCurrentMonitor(void)
|
||||||
|
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
if ((mons[i].rect.x == mon.rect.x) && (mons[i].rect.y == mon.rect.y))
|
if ((mons[i].rect.x == mon.rect.x) && (mons[i].rect.y == mon.rect.y)) current = i;
|
||||||
return i;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -672,8 +674,6 @@ void HideCursor(void)
|
||||||
CORE.Input.Mouse.cursorHidden = true;
|
CORE.Input.Mouse.cursorHidden = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RGFW_disableCursor = false;
|
|
||||||
|
|
||||||
// Enables cursor (unlock cursor)
|
// Enables cursor (unlock cursor)
|
||||||
void EnableCursor(void)
|
void EnableCursor(void)
|
||||||
{
|
{
|
||||||
|
|
@ -727,7 +727,7 @@ void OpenURL(const char *url)
|
||||||
if (strchr(url, '\'') != NULL) TRACELOG(LOG_WARNING, "SYSTEM: Provided URL could be potentially malicious, avoid [\'] character");
|
if (strchr(url, '\'') != NULL) TRACELOG(LOG_WARNING, "SYSTEM: Provided URL could be potentially malicious, avoid [\'] character");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// TODO:
|
// TODO: Open URL implementation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -756,18 +756,21 @@ void SetMouseCursor(int cursor)
|
||||||
RGFW_window_setMouseStandard(platform.window, cursor);
|
RGFW_window_setMouseStandard(platform.window, cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get physical key name.
|
||||||
|
const char *GetKeyName(int key)
|
||||||
|
{
|
||||||
|
TRACELOG(LOG_WARNING, "GetKeyName() not implemented on target platform");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
static KeyboardKey ConvertScancodeToKey(u32 keycode);
|
static KeyboardKey ConvertScancodeToKey(u32 keycode);
|
||||||
|
|
||||||
/*
|
// TODO: Review function to avoid duplicate with RSGL
|
||||||
TODO, try to make this better (RSGL uses this method too :I )
|
char RSGL_keystrToChar(const char *str)
|
||||||
sourced from RSGL obviously -> ColleagueRiley
|
{
|
||||||
*/
|
if (str[1] == 0) return str[0];
|
||||||
char RSGL_keystrToChar(const char* str) {
|
|
||||||
if (str[1] == 0)
|
|
||||||
return str[0];
|
|
||||||
|
|
||||||
|
static const char *map[] = {
|
||||||
static const char* map[] = {
|
|
||||||
"asciitilde", "`",
|
"asciitilde", "`",
|
||||||
"grave", "~",
|
"grave", "~",
|
||||||
"exclam", "!",
|
"exclam", "!",
|
||||||
|
|
@ -806,10 +809,10 @@ char RSGL_keystrToChar(const char* str) {
|
||||||
"enter", "\n",
|
"enter", "\n",
|
||||||
};
|
};
|
||||||
|
|
||||||
u8 i = 0;
|
for (unsigned char i = 0; i < (sizeof(map)/sizeof(char *)); i += 2)
|
||||||
for (i = 0; i < (sizeof(map) / sizeof(char*)); i += 2)
|
{
|
||||||
if (strcmp(map[i], str) == 0)
|
if (strcmp(map[i], str) == 0) return *map[i + 1];
|
||||||
return *map[i + 1];
|
}
|
||||||
|
|
||||||
return '\0';
|
return '\0';
|
||||||
}
|
}
|
||||||
|
|
@ -866,8 +869,7 @@ void PollInputEvents(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register previous mouse states
|
// Register previous mouse states
|
||||||
for (int i = 0; i < MAX_MOUSE_BUTTONS; i++)
|
for (int i = 0; i < MAX_MOUSE_BUTTONS; i++) CORE.Input.Mouse.previousButtonState[i] = CORE.Input.Mouse.currentButtonState[i];
|
||||||
CORE.Input.Mouse.previousButtonState[i] = CORE.Input.Mouse.currentButtonState[i];
|
|
||||||
|
|
||||||
// Poll input events for current platform
|
// Poll input events for current platform
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
@ -881,10 +883,11 @@ void PollInputEvents(void)
|
||||||
CORE.Input.Mouse.previousPosition = (Vector2){ 0.0f, 0.0f };
|
CORE.Input.Mouse.previousPosition = (Vector2){ 0.0f, 0.0f };
|
||||||
CORE.Input.Mouse.currentPosition = (Vector2){ 0.0f, 0.0f };
|
CORE.Input.Mouse.currentPosition = (Vector2){ 0.0f, 0.0f };
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
CORE.Input.Mouse.previousPosition = CORE.Input.Mouse.currentPosition;
|
CORE.Input.Mouse.previousPosition = CORE.Input.Mouse.currentPosition;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
while (RGFW_window_checkEvent(platform.window))
|
while (RGFW_window_checkEvent(platform.window))
|
||||||
{
|
{
|
||||||
|
|
@ -901,7 +904,7 @@ void PollInputEvents(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RGFW_Event* event = &platform.window->event;
|
RGFW_Event *event = &platform.window->event;
|
||||||
|
|
||||||
// All input events can be processed after polling
|
// All input events can be processed after polling
|
||||||
switch (event->type)
|
switch (event->type)
|
||||||
|
|
@ -1163,6 +1166,7 @@ void PollInputEvents(void)
|
||||||
int button = (axis == GAMEPAD_AXIS_LEFT_TRIGGER)? GAMEPAD_BUTTON_LEFT_TRIGGER_2 : GAMEPAD_BUTTON_RIGHT_TRIGGER_2;
|
int button = (axis == GAMEPAD_AXIS_LEFT_TRIGGER)? GAMEPAD_BUTTON_LEFT_TRIGGER_2 : GAMEPAD_BUTTON_RIGHT_TRIGGER_2;
|
||||||
int pressed = (value > 0.1f);
|
int pressed = (value > 0.1f);
|
||||||
CORE.Input.Gamepad.currentButtonState[event->joystick][button] = pressed;
|
CORE.Input.Gamepad.currentButtonState[event->joystick][button] = pressed;
|
||||||
|
|
||||||
if (pressed) CORE.Input.Gamepad.lastButtonPressed = button;
|
if (pressed) CORE.Input.Gamepad.lastButtonPressed = button;
|
||||||
else if (CORE.Input.Gamepad.lastButtonPressed == button) CORE.Input.Gamepad.lastButtonPressed = 0;
|
else if (CORE.Input.Gamepad.lastButtonPressed == button) CORE.Input.Gamepad.lastButtonPressed = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -1262,8 +1266,7 @@ int InitPlatform(void)
|
||||||
SetupFramebuffer(CORE.Window.display.width, CORE.Window.display.height);
|
SetupFramebuffer(CORE.Window.display.width, CORE.Window.display.height);
|
||||||
|
|
||||||
|
|
||||||
if (CORE.Window.flags & FLAG_VSYNC_HINT)
|
if (CORE.Window.flags & FLAG_VSYNC_HINT) RGFW_window_swapInterval(platform.window, 1);
|
||||||
RGFW_window_swapInterval(platform.window, 1);
|
|
||||||
|
|
||||||
RGFW_window_makeCurrent(platform.window);
|
RGFW_window_makeCurrent(platform.window);
|
||||||
|
|
||||||
|
|
@ -1328,12 +1331,12 @@ int InitPlatform(void)
|
||||||
CORE.Storage.basePath = GetWorkingDirectory();
|
CORE.Storage.basePath = GetWorkingDirectory();
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
#ifdef RGFW_X11
|
#ifdef RGFW_X11
|
||||||
for (int i = 0; (i < 4) && (i < MAX_GAMEPADS); i++)
|
for (int i = 0; (i < 4) && (i < MAX_GAMEPADS); i++)
|
||||||
{
|
{
|
||||||
RGFW_registerJoystick(platform.window, i);
|
RGFW_registerJoystick(platform.window, i);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TRACELOG(LOG_INFO, "PLATFORM: CUSTOM: Initialized successfully");
|
TRACELOG(LOG_INFO, "PLATFORM: CUSTOM: Initialized successfully");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -966,6 +966,12 @@ void SetMouseCursor(int cursor)
|
||||||
CORE.Input.Mouse.cursor = cursor;
|
CORE.Input.Mouse.cursor = cursor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get physical key name.
|
||||||
|
const char *GetKeyName(int key)
|
||||||
|
{
|
||||||
|
return SDL_GetKeyName(key);
|
||||||
|
}
|
||||||
|
|
||||||
static void UpdateTouchPointsSDL(SDL_TouchFingerEvent event)
|
static void UpdateTouchPointsSDL(SDL_TouchFingerEvent event)
|
||||||
{
|
{
|
||||||
CORE.Input.Touch.pointCount = SDL_GetNumTouchFingers(event.touchId);
|
CORE.Input.Touch.pointCount = SDL_GetNumTouchFingers(event.touchId);
|
||||||
|
|
|
||||||
|
|
@ -628,6 +628,13 @@ void SetMouseCursor(int cursor)
|
||||||
TRACELOG(LOG_WARNING, "SetMouseCursor() not implemented on target platform");
|
TRACELOG(LOG_WARNING, "SetMouseCursor() not implemented on target platform");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get physical key name.
|
||||||
|
const char *GetKeyName(int key)
|
||||||
|
{
|
||||||
|
TRACELOG(LOG_WARNING, "GetKeyName() not implemented on target platform");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
// Register all input events
|
// Register all input events
|
||||||
void PollInputEvents(void)
|
void PollInputEvents(void)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -384,6 +384,13 @@ void SetMouseCursor(int cursor)
|
||||||
TRACELOG(LOG_WARNING, "SetMouseCursor() not implemented on target platform");
|
TRACELOG(LOG_WARNING, "SetMouseCursor() not implemented on target platform");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get physical key name.
|
||||||
|
const char *GetKeyName(int key)
|
||||||
|
{
|
||||||
|
TRACELOG(LOG_WARNING, "GetKeyName() not implemented on target platform");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
// Register all input events
|
// Register all input events
|
||||||
void PollInputEvents(void)
|
void PollInputEvents(void)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -884,6 +884,13 @@ void SetMouseCursor(int cursor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get physical key name.
|
||||||
|
const char *GetKeyName(int key)
|
||||||
|
{
|
||||||
|
TRACELOG(LOG_WARNING, "GetKeyName() not implemented on target platform");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
// Register all input events
|
// Register all input events
|
||||||
void PollInputEvents(void)
|
void PollInputEvents(void)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1550,7 +1550,7 @@ Music LoadMusicStreamFromMemory(const char *fileType, const unsigned char *data,
|
||||||
else if ((strcmp(fileType, ".ogg") == 0) || (strcmp(fileType, ".OGG") == 0))
|
else if ((strcmp(fileType, ".ogg") == 0) || (strcmp(fileType, ".OGG") == 0))
|
||||||
{
|
{
|
||||||
// Open ogg audio stream
|
// Open ogg audio stream
|
||||||
stb_vorbis* ctxOgg = stb_vorbis_open_memory((const unsigned char*)data, dataSize, NULL, NULL);
|
stb_vorbis* ctxOgg = stb_vorbis_open_memory((const unsigned char *)data, dataSize, NULL, NULL);
|
||||||
|
|
||||||
if (ctxOgg != NULL)
|
if (ctxOgg != NULL)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
/**********************************************************************************************
|
/**********************************************************************************************
|
||||||
*
|
*
|
||||||
* raylib v5.5 - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com)
|
* raylib v5.5-dev - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com)
|
||||||
*
|
*
|
||||||
* FEATURES:
|
* FEATURES:
|
||||||
* - NO external dependencies, all required libraries included with raylib
|
* - NO external dependencies, all required libraries included with raylib
|
||||||
|
|
@ -84,7 +84,7 @@
|
||||||
#define RAYLIB_VERSION_MAJOR 5
|
#define RAYLIB_VERSION_MAJOR 5
|
||||||
#define RAYLIB_VERSION_MINOR 5
|
#define RAYLIB_VERSION_MINOR 5
|
||||||
#define RAYLIB_VERSION_PATCH 0
|
#define RAYLIB_VERSION_PATCH 0
|
||||||
#define RAYLIB_VERSION "5.5"
|
#define RAYLIB_VERSION "5.5-dev"
|
||||||
|
|
||||||
// Function specifiers in case library is build/used as a shared library
|
// Function specifiers in case library is build/used as a shared library
|
||||||
// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll
|
// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll
|
||||||
|
|
|
||||||
|
|
@ -683,6 +683,8 @@ void InitWindow(int width, int height, const char *title)
|
||||||
|
|
||||||
// Initialize random seed
|
// Initialize random seed
|
||||||
SetRandomSeed((unsigned int)time(NULL));
|
SetRandomSeed((unsigned int)time(NULL));
|
||||||
|
|
||||||
|
TRACELOG(LOG_INFO, "SYSTEM: Working Directory: %s", GetWorkingDirectory());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close window and unload OpenGL context
|
// Close window and unload OpenGL context
|
||||||
|
|
@ -3482,7 +3484,7 @@ static void RecordAutomationEvent(void)
|
||||||
currentEventList->events[currentEventList->count].frame = CORE.Time.frameCounter;
|
currentEventList->events[currentEventList->count].frame = CORE.Time.frameCounter;
|
||||||
currentEventList->events[currentEventList->count].type = INPUT_MOUSE_WHEEL_MOTION;
|
currentEventList->events[currentEventList->count].type = INPUT_MOUSE_WHEEL_MOTION;
|
||||||
currentEventList->events[currentEventList->count].params[0] = (int)CORE.Input.Mouse.currentWheelMove.x;
|
currentEventList->events[currentEventList->count].params[0] = (int)CORE.Input.Mouse.currentWheelMove.x;
|
||||||
currentEventList->events[currentEventList->count].params[1] = (int)CORE.Input.Mouse.currentWheelMove.y;;
|
currentEventList->events[currentEventList->count].params[1] = (int)CORE.Input.Mouse.currentWheelMove.y;
|
||||||
currentEventList->events[currentEventList->count].params[2] = 0;
|
currentEventList->events[currentEventList->count].params[2] = 0;
|
||||||
|
|
||||||
TRACELOG(LOG_INFO, "AUTOMATION: Frame: %i | Event type: INPUT_MOUSE_WHEEL_MOTION | Event parameters: %i, %i, %i", currentEventList->events[currentEventList->count].frame, currentEventList->events[currentEventList->count].params[0], currentEventList->events[currentEventList->count].params[1], currentEventList->events[currentEventList->count].params[2]);
|
TRACELOG(LOG_INFO, "AUTOMATION: Frame: %i | Event type: INPUT_MOUSE_WHEEL_MOTION | Event parameters: %i, %i, %i", currentEventList->events[currentEventList->count].frame, currentEventList->events[currentEventList->count].params[0], currentEventList->events[currentEventList->count].params[1], currentEventList->events[currentEventList->count].params[2]);
|
||||||
|
|
|
||||||
|
|
@ -4401,7 +4401,7 @@ unsigned int rlGetShaderBufferSize(unsigned int id)
|
||||||
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_43)
|
#if defined(GRAPHICS_API_OPENGL_43)
|
||||||
glBindBuffer(GL_SHADER_STORAGE_BUFFER, id);
|
glBindBuffer(GL_SHADER_STORAGE_BUFFER, id);
|
||||||
glGetInteger64v(GL_SHADER_STORAGE_BUFFER_SIZE, &size);
|
glGetBufferParameteri64v(GL_SHADER_STORAGE_BUFFER, GL_BUFFER_SIZE, &size);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return (size > 0)? (unsigned int)size : 0;
|
return (size > 0)? (unsigned int)size : 0;
|
||||||
|
|
|
||||||
|
|
@ -1072,16 +1072,10 @@ void DrawGrid(int slices, float spacing)
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
{
|
{
|
||||||
rlColor3f(0.5f, 0.5f, 0.5f);
|
rlColor3f(0.5f, 0.5f, 0.5f);
|
||||||
rlColor3f(0.5f, 0.5f, 0.5f);
|
|
||||||
rlColor3f(0.5f, 0.5f, 0.5f);
|
|
||||||
rlColor3f(0.5f, 0.5f, 0.5f);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rlColor3f(0.75f, 0.75f, 0.75f);
|
rlColor3f(0.75f, 0.75f, 0.75f);
|
||||||
rlColor3f(0.75f, 0.75f, 0.75f);
|
|
||||||
rlColor3f(0.75f, 0.75f, 0.75f);
|
|
||||||
rlColor3f(0.75f, 0.75f, 0.75f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rlVertex3f((float)i*spacing, 0.0f, (float)-halfSlices*spacing);
|
rlVertex3f((float)i*spacing, 0.0f, (float)-halfSlices*spacing);
|
||||||
|
|
@ -4294,7 +4288,7 @@ static Model LoadIQM(const char *fileName)
|
||||||
// In case file can not be read, return an empty model
|
// In case file can not be read, return an empty model
|
||||||
if (fileDataPtr == NULL) return model;
|
if (fileDataPtr == NULL) return model;
|
||||||
|
|
||||||
const char* basePath = GetDirectoryPath(fileName);
|
const char *basePath = GetDirectoryPath(fileName);
|
||||||
|
|
||||||
// Read IQM header
|
// Read IQM header
|
||||||
IQMHeader *iqmHeader = (IQMHeader *)fileDataPtr;
|
IQMHeader *iqmHeader = (IQMHeader *)fileDataPtr;
|
||||||
|
|
|
||||||
|
|
@ -1572,7 +1572,7 @@ char *TextReplace(const char *text, const char *replace, const char *by)
|
||||||
byLen = TextLength(by);
|
byLen = TextLength(by);
|
||||||
|
|
||||||
// Count the number of replacements needed
|
// Count the number of replacements needed
|
||||||
insertPoint = (char*)text;
|
insertPoint = (char *)text;
|
||||||
for (count = 0; (temp = strstr(insertPoint, replace)); count++) insertPoint = temp + replaceLen;
|
for (count = 0; (temp = strstr(insertPoint, replace)); count++) insertPoint = temp + replaceLen;
|
||||||
|
|
||||||
// Allocate returning string and point temp to it
|
// Allocate returning string and point temp to it
|
||||||
|
|
@ -2339,7 +2339,7 @@ static GlyphInfo *LoadFontDataBDF(const unsigned char *fileData, int dataSize, i
|
||||||
int readBytes = 0; // Data bytes read (line)
|
int readBytes = 0; // Data bytes read (line)
|
||||||
int readVars = 0; // Variables filled by sscanf()
|
int readVars = 0; // Variables filled by sscanf()
|
||||||
|
|
||||||
const char *fileText = (const char*)fileData;
|
const char *fileText = (const char *)fileData;
|
||||||
const char *fileTextPtr = fileText;
|
const char *fileTextPtr = fileText;
|
||||||
|
|
||||||
bool fontMalformed = false; // Is the font malformed
|
bool fontMalformed = false; // Is the font malformed
|
||||||
|
|
|
||||||
|
|
@ -1213,6 +1213,7 @@ Image GenImageText(int width, int height, const char *text)
|
||||||
{
|
{
|
||||||
Image image = { 0 };
|
Image image = { 0 };
|
||||||
|
|
||||||
|
#if defined(SUPPORT_MODULE_RTEXT)
|
||||||
int textLength = TextLength(text);
|
int textLength = TextLength(text);
|
||||||
int imageViewSize = width*height;
|
int imageViewSize = width*height;
|
||||||
|
|
||||||
|
|
@ -1223,6 +1224,10 @@ Image GenImageText(int width, int height, const char *text)
|
||||||
image.mipmaps = 1;
|
image.mipmaps = 1;
|
||||||
|
|
||||||
memcpy(image.data, text, (textLength > imageViewSize)? imageViewSize : textLength);
|
memcpy(image.data, text, (textLength > imageViewSize)? imageViewSize : textLength);
|
||||||
|
#else
|
||||||
|
TRACELOG(LOG_WARNING, "IMAGE: GenImageText() requires module: rtext");
|
||||||
|
image = GenImageColor(width, height, BLACK); // Generating placeholder black image rectangle
|
||||||
|
#endif
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user