Merge branch 'pure' of https://github.com/ColleagueRiley/raylib
This commit is contained in:
commit
f1cf7bf349
14
BINDINGS.md
14
BINDINGS.md
|
|
@ -7,7 +7,7 @@ Some people ported raylib to other languages in the form of bindings or wrappers
|
||||||
| Name | raylib Version | Language | License |
|
| Name | raylib Version | Language | License |
|
||||||
| :--------------------------------------------------------------------------------------- | :--------------: | :------------------------------------------------------------------: | :------------------: |
|
| :--------------------------------------------------------------------------------------- | :--------------: | :------------------------------------------------------------------: | :------------------: |
|
||||||
| [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.5** | [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) | **5.0** | [Brainfuck](https://en.wikipedia.org/wiki/Brainfuck) | MIT |
|
| [raybit](https://github.com/Alex-Velez/raybit) | **5.0** | [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 |
|
||||||
|
|
@ -23,11 +23,11 @@ Some people ported raylib to other languages in the form of bindings or wrappers
|
||||||
| [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) | **5.0** | [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.5** | [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 |
|
||||||
| [raylib-freebasic](https://github.com/WIITD/raylib-freebasic) | **5.0** | [FreeBASIC](https://www.freebasic.net) | MIT |
|
| [raylib-freebasic](https://github.com/WIITD/raylib-freebasic) | **5.0** | [FreeBASIC](https://www.freebasic.net) | MIT |
|
||||||
| [fortran-raylib](https://github.com/interkosmos/fortran-raylib) | 4.5 | [Fortran](https://fortran-lang.org) | ISC |
|
| [fortran-raylib](https://github.com/interkosmos/fortran-raylib) | **5.5** | [Fortran](https://fortran-lang.org) | ISC |
|
||||||
| [raylib-go](https://github.com/gen2brain/raylib-go) | **5.0** | [Go](https://golang.org) | Zlib |
|
| [raylib-go](https://github.com/gen2brain/raylib-go) | **5.0** | [Go](https://golang.org) | Zlib |
|
||||||
| [raylib-guile](https://github.com/petelliott/raylib-guile) | **auto** | [Guile](https://www.gnu.org/software/guile) | Zlib |
|
| [raylib-guile](https://github.com/petelliott/raylib-guile) | **auto** | [Guile](https://www.gnu.org/software/guile) | Zlib |
|
||||||
| [gforth-raylib](https://github.com/ArnautDaniel/gforth-raylib) | 3.5 | [Gforth](https://gforth.org) | **???** |
|
| [gforth-raylib](https://github.com/ArnautDaniel/gforth-raylib) | 3.5 | [Gforth](https://gforth.org) | **???** |
|
||||||
|
|
@ -51,12 +51,12 @@ Some people ported raylib to other languages in the form of bindings or wrappers
|
||||||
| [raylib_odin_bindings](https://github.com/Deathbat2190/raylib_odin_bindings) | 4.0-dev | [Odin](https://odin-lang.org) | MIT |
|
| [raylib_odin_bindings](https://github.com/Deathbat2190/raylib_odin_bindings) | 4.0-dev | [Odin](https://odin-lang.org) | MIT |
|
||||||
| [raylib-ocaml](https://github.com/tjammer/raylib-ocaml) | **5.0** | [OCaml](https://ocaml.org) | MIT |
|
| [raylib-ocaml](https://github.com/tjammer/raylib-ocaml) | **5.0** | [OCaml](https://ocaml.org) | MIT |
|
||||||
| [TurboRaylib](https://github.com/turborium/TurboRaylib) | 4.5 | [Object Pascal](https://en.wikipedia.org/wiki/Object_Pascal) | MIT |
|
| [TurboRaylib](https://github.com/turborium/TurboRaylib) | 4.5 | [Object Pascal](https://en.wikipedia.org/wiki/Object_Pascal) | MIT |
|
||||||
| [Ray4Laz](https://github.com/GuvaCode/Ray4Laz) | **5.0** | [Free Pascal](https://en.wikipedia.org/wiki/Free_Pascal) | Zlib |
|
| [Ray4Laz](https://github.com/GuvaCode/Ray4Laz) | **5.5** | [Free Pascal](https://en.wikipedia.org/wiki/Free_Pascal) | Zlib |
|
||||||
| [Raylib.4.0.Pascal](https://github.com/sysrpl/Raylib.4.0.Pascal) | 4.0 | [Free Pascal](https://en.wikipedia.org/wiki/Free_Pascal) | Zlib |
|
| [Raylib.4.0.Pascal](https://github.com/sysrpl/Raylib.4.0.Pascal) | 4.0 | [Free Pascal](https://en.wikipedia.org/wiki/Free_Pascal) | Zlib |
|
||||||
| [pyraylib](https://github.com/Ho011/pyraylib) | 3.7 | [Python](https://www.python.org) | Zlib |
|
| [pyraylib](https://github.com/Ho011/pyraylib) | 3.7 | [Python](https://www.python.org) | Zlib |
|
||||||
| [raylib-python-cffi](https://github.com/electronstudio/raylib-python-cffi) | 4.2 | [Python](https://www.python.org) | EPL-2.0 |
|
| [raylib-python-cffi](https://github.com/electronstudio/raylib-python-cffi) | **5.5** | [Python](https://www.python.org) | EPL-2.0 |
|
||||||
| [raylibpyctbg](https://github.com/overdev/raylibpyctbg) | 4.5 | [Python](https://www.python.org) | MIT |
|
| [raylibpyctbg](https://github.com/overdev/raylibpyctbg) | 4.5 | [Python](https://www.python.org) | MIT |
|
||||||
| [raylib-py](https://github.com/overdev/raylib-py) | **5.0b1** | [Python](https://www.python.org) | MIT |
|
| [raylib-py](https://github.com/overdev/raylib-py) | 5.5 | [Python](https://www.python.org) | MIT |
|
||||||
| [raylib-python-ctypes](https://github.com/sDos280/raylib-python-ctypes) | 4.6-dev | [Python](https://www.python.org) | MIT |
|
| [raylib-python-ctypes](https://github.com/sDos280/raylib-python-ctypes) | 4.6-dev | [Python](https://www.python.org) | MIT |
|
||||||
| [raylib-pkpy-bindings](https://github.com/blueloveTH/pkpy-bindings) | 4.6-dev | [pocketpy](https://pocketpy.dev) | MIT |
|
| [raylib-pkpy-bindings](https://github.com/blueloveTH/pkpy-bindings) | 4.6-dev | [pocketpy](https://pocketpy.dev) | MIT |
|
||||||
| [raylib-php](https://github.com/joseph-montanez/raylib-php) | 4.5 | [PHP](https://en.wikipedia.org/wiki/PHP) | Zlib |
|
| [raylib-php](https://github.com/joseph-montanez/raylib-php) | 4.5 | [PHP](https://en.wikipedia.org/wiki/PHP) | Zlib |
|
||||||
|
|
@ -90,7 +90,7 @@ Some people ported raylib to other languages in the form of bindings or wrappers
|
||||||
These are utility wrappers for specific languages, they are not required to use raylib in the language but may adapt the raylib API to be more inline with the language's paradigm.
|
These are utility wrappers for specific languages, they are not required to use raylib in the language but may adapt the raylib API to be more inline with the language's paradigm.
|
||||||
| Name | raylib Version | Language | License |
|
| Name | raylib Version | Language | License |
|
||||||
| ---------------------------------------------------- | :------------: | :------------------------------------------: | :-----: |
|
| ---------------------------------------------------- | :------------: | :------------------------------------------: | :-----: |
|
||||||
| [raylib-cpp](https://github.com/robloach/raylib-cpp) | **5.0** | [C++](https://en.wikipedia.org/wiki/C%2B%2B) | Zlib |
|
| [raylib-cpp](https://github.com/robloach/raylib-cpp) | **5.5** | [C++](https://en.wikipedia.org/wiki/C%2B%2B) | Zlib |
|
||||||
| [claylib](https://github.com/defun-games/claylib) | 4.5 | [Common Lisp](https://common-lisp.net) | Zlib |
|
| [claylib](https://github.com/defun-games/claylib) | 4.5 | [Common Lisp](https://common-lisp.net) | Zlib |
|
||||||
| [rayed-bqn](https://github.com/Brian-ED/rayed-bqn) | **5.0** | [BQN](https://mlochbaum.github.io/BQN) | MIT |
|
| [rayed-bqn](https://github.com/Brian-ED/rayed-bqn) | **5.0** | [BQN](https://mlochbaum.github.io/BQN) | MIT |
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -475,7 +475,7 @@ Undoubtedly, this is the **biggest raylib update in 10 years**. Many new feature
|
||||||
notes on raylib 5.5
|
notes on raylib 5.5
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
One year after raylib 5.0 release, arribes `raylib 5.5`, the next big revision of the library. It's been **11 years** since raylib 1.0 release and in all this time it has never stopped growing and improving. With an outstanding number of new contributors and improvements, it's, again, the biggest raylib release to date.
|
One year after raylib 5.0 release, arrives `raylib 5.5`, the next big revision of the library. It's been **11 years** since raylib 1.0 release and in all this time it has never stopped growing and improving. With an outstanding number of new contributors and improvements, it's, again, the biggest raylib release to date.
|
||||||
|
|
||||||
Some numbers for this release:
|
Some numbers for this release:
|
||||||
|
|
||||||
|
|
@ -487,7 +487,7 @@ Some numbers for this release:
|
||||||
|
|
||||||
Highlights for `raylib 5.5`:
|
Highlights for `raylib 5.5`:
|
||||||
|
|
||||||
- **`NEW` raylib pre-configured Windows package**: The new raylib **postable and self-contained Windows package** for `raylib 5.5`, intended for nobel devs that start in programming world, comes with one big addition: support for **C code building for Web platform with one-single-mouse-click!** For the last 10 years, the pre-configured raylib Windows package allowed to edit simple C projects on Notepad++ and easely compile Windows executables with an automatic script; this new release adds the possibility to compile the same C projects for Web platform with a simple mouse click. This new addition **greatly simplifies C to WebAssembly project building for new users**. The `raylib Windows Installer` package can be downloaded for free from [raylib on itch.io](https://raysan5.itch.io/raylib).
|
- **`NEW` raylib pre-configured Windows package**: The new raylib **portable and self-contained Windows package** for `raylib 5.5`, intended for nobel devs that start in programming world, comes with one big addition: support for **C code building for Web platform with one-single-mouse-click!** For the last 10 years, the pre-configured raylib Windows package allowed to edit simple C projects on Notepad++ and easely compile Windows executables with an automatic script; this new release adds the possibility to compile the same C projects for Web platform with a simple mouse click. This new addition **greatly simplifies C to WebAssembly project building for new users**. The `raylib Windows Installer` package can be downloaded for free from [raylib on itch.io](https://raysan5.itch.io/raylib).
|
||||||
|
|
||||||
- **`NEW` raylib project creator tool**: A brand new tool developed to help raylib users to **setup new projects in a professional way**. `raylib project creator` generates a complete project structure with **multiple build systems ready-to-use** and **GitHub CI/CD actions pre-configured**. It only requires providing some C files and basic project parameters! The tools is [free and open-source](https://raysan5.itch.io/raylib-project-creator), and [it can be used online](https://raysan5.itch.io/raylib-project-creator)!.
|
- **`NEW` raylib project creator tool**: A brand new tool developed to help raylib users to **setup new projects in a professional way**. `raylib project creator` generates a complete project structure with **multiple build systems ready-to-use** and **GitHub CI/CD actions pre-configured**. It only requires providing some C files and basic project parameters! The tools is [free and open-source](https://raysan5.itch.io/raylib-project-creator), and [it can be used online](https://raysan5.itch.io/raylib-project-creator)!.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ Ready to learn? Jump to [code examples!](https://www.raylib.com/examples.html)
|
||||||
|
|
||||||
[](https://github.com/raysan5/raylib/releases)
|
[](https://github.com/raysan5/raylib/releases)
|
||||||
[](https://github.com/raysan5/raylib/stargazers)
|
[](https://github.com/raysan5/raylib/stargazers)
|
||||||
[](https://github.com/raysan5/raylib/commits/master)
|
[](https://github.com/raysan5/raylib/commits/master)
|
||||||
[](https://github.com/sponsors/raysan5)
|
[](https://github.com/sponsors/raysan5)
|
||||||
[](https://repology.org/project/raylib/versions)
|
[](https://repology.org/project/raylib/versions)
|
||||||
[](LICENSE)
|
[](LICENSE)
|
||||||
|
|
|
||||||
37
build.zig
37
build.zig
|
|
@ -12,8 +12,6 @@ comptime {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn setDesktopPlatform(raylib: *std.Build.Step.Compile, platform: PlatformBackend) void {
|
fn setDesktopPlatform(raylib: *std.Build.Step.Compile, platform: PlatformBackend) void {
|
||||||
raylib.defineCMacro("PLATFORM_DESKTOP", null);
|
|
||||||
|
|
||||||
switch (platform) {
|
switch (platform) {
|
||||||
.glfw => raylib.defineCMacro("PLATFORM_DESKTOP_GLFW", null),
|
.glfw => raylib.defineCMacro("PLATFORM_DESKTOP_GLFW", null),
|
||||||
.rgfw => raylib.defineCMacro("PLATFORM_DESKTOP_RGFW", null),
|
.rgfw => raylib.defineCMacro("PLATFORM_DESKTOP_RGFW", null),
|
||||||
|
|
@ -58,6 +56,7 @@ const config_h_flags = outer: {
|
||||||
var lines = std.mem.tokenizeScalar(u8, config_h, '\n');
|
var lines = std.mem.tokenizeScalar(u8, config_h, '\n');
|
||||||
while (lines.next()) |line| {
|
while (lines.next()) |line| {
|
||||||
if (!std.mem.containsAtLeast(u8, line, 1, "SUPPORT")) continue;
|
if (!std.mem.containsAtLeast(u8, line, 1, "SUPPORT")) continue;
|
||||||
|
if (std.mem.containsAtLeast(u8, line, 1, "MODULE")) continue;
|
||||||
if (std.mem.startsWith(u8, line, "//")) continue;
|
if (std.mem.startsWith(u8, line, "//")) continue;
|
||||||
if (std.mem.startsWith(u8, line, "#if")) continue;
|
if (std.mem.startsWith(u8, line, "#if")) continue;
|
||||||
|
|
||||||
|
|
@ -94,10 +93,9 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.config.len > 0) {
|
|
||||||
// Sets a flag indiciating the use of a custom `config.h`
|
// Sets a flag indiciating the use of a custom `config.h`
|
||||||
try raylib_flags_arr.append("-DEXTERNAL_CONFIG_FLAGS");
|
try raylib_flags_arr.append("-DEXTERNAL_CONFIG_FLAGS");
|
||||||
|
if (options.config.len > 0) {
|
||||||
// Splits a space-separated list of config flags into multiple flags
|
// Splits a space-separated list of config flags into multiple flags
|
||||||
//
|
//
|
||||||
// Note: This means certain flags like `-x c++` won't be processed properly.
|
// Note: This means certain flags like `-x c++` won't be processed properly.
|
||||||
|
|
@ -126,6 +124,9 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
||||||
// Otherwise, append default value from config.h to compile flags
|
// Otherwise, append default value from config.h to compile flags
|
||||||
try raylib_flags_arr.append(flag);
|
try raylib_flags_arr.append(flag);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// Set default config if no custome config got set
|
||||||
|
try raylib_flags_arr.appendSlice(&config_h_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
const raylib = if (options.shared)
|
const raylib = if (options.shared)
|
||||||
|
|
@ -150,26 +151,32 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
||||||
var c_source_files = try std.ArrayList([]const u8).initCapacity(b.allocator, 2);
|
var c_source_files = try std.ArrayList([]const u8).initCapacity(b.allocator, 2);
|
||||||
c_source_files.appendSliceAssumeCapacity(&.{ "src/rcore.c", "src/utils.c" });
|
c_source_files.appendSliceAssumeCapacity(&.{ "src/rcore.c", "src/utils.c" });
|
||||||
|
|
||||||
if (options.raudio) {
|
|
||||||
try c_source_files.append("src/raudio.c");
|
|
||||||
}
|
|
||||||
if (options.rmodels) {
|
|
||||||
try c_source_files.append("src/rmodels.c");
|
|
||||||
}
|
|
||||||
if (options.rshapes) {
|
if (options.rshapes) {
|
||||||
try c_source_files.append("src/rshapes.c");
|
try c_source_files.append("src/rshapes.c");
|
||||||
}
|
try raylib_flags_arr.append("-DSUPPORT_MODULE_RSHAPES");
|
||||||
if (options.rtext) {
|
|
||||||
try c_source_files.append("src/rtext.c");
|
|
||||||
}
|
}
|
||||||
if (options.rtextures) {
|
if (options.rtextures) {
|
||||||
try c_source_files.append("src/rtextures.c");
|
try c_source_files.append("src/rtextures.c");
|
||||||
|
try raylib_flags_arr.append("-DSUPPORT_MODULE_RTEXTURES");
|
||||||
|
}
|
||||||
|
if (options.rtext) {
|
||||||
|
try c_source_files.append("src/rtext.c");
|
||||||
|
try raylib_flags_arr.append("-DSUPPORT_MODULE_RTEXT");
|
||||||
|
}
|
||||||
|
if (options.rmodels) {
|
||||||
|
try c_source_files.append("src/rmodels.c");
|
||||||
|
try raylib_flags_arr.append("-DSUPPORT_MODULE_RMODELS");
|
||||||
|
}
|
||||||
|
if (options.raudio) {
|
||||||
|
try c_source_files.append("src/raudio.c");
|
||||||
|
try raylib_flags_arr.append("-DSUPPORT_MODULE_RAUDIO");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.opengl_version != .auto) {
|
if (options.opengl_version != .auto) {
|
||||||
raylib.defineCMacro(options.opengl_version.toCMacroStr(), null);
|
raylib.defineCMacro(options.opengl_version.toCMacroStr(), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
raylib.addIncludePath(b.path("src/platforms"));
|
||||||
switch (target.result.os.tag) {
|
switch (target.result.os.tag) {
|
||||||
.windows => {
|
.windows => {
|
||||||
try c_source_files.append("src/rglfw.c");
|
try c_source_files.append("src/rglfw.c");
|
||||||
|
|
@ -302,12 +309,14 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn addRaygui(b: *std.Build, raylib: *std.Build.Step.Compile, raygui_dep: *std.Build.Dependency) void {
|
pub fn addRaygui(b: *std.Build, raylib: *std.Build.Step.Compile, raygui_dep: *std.Build.Dependency) void {
|
||||||
|
const raylib_dep = b.dependencyFromBuildZig(@This(), .{});
|
||||||
var gen_step = b.addWriteFiles();
|
var gen_step = b.addWriteFiles();
|
||||||
raylib.step.dependOn(&gen_step.step);
|
raylib.step.dependOn(&gen_step.step);
|
||||||
|
|
||||||
const raygui_c_path = gen_step.add("raygui.c", "#define RAYGUI_IMPLEMENTATION\n#include \"raygui.h\"\n");
|
const raygui_c_path = gen_step.add("raygui.c", "#define RAYGUI_IMPLEMENTATION\n#include \"raygui.h\"\n");
|
||||||
raylib.addCSourceFile(.{ .file = raygui_c_path });
|
raylib.addCSourceFile(.{ .file = raygui_c_path });
|
||||||
raylib.addIncludePath(raygui_dep.path("src"));
|
raylib.addIncludePath(raygui_dep.path("src"));
|
||||||
|
raylib.addIncludePath(raylib_dep.path("src"));
|
||||||
|
|
||||||
raylib.installHeader(raygui_dep.path("src/raygui.h"), "raygui.h");
|
raylib.installHeader(raygui_dep.path("src/raygui.h"), "raygui.h");
|
||||||
}
|
}
|
||||||
|
|
@ -327,7 +336,7 @@ pub const Options = struct {
|
||||||
|
|
||||||
const defaults = Options{};
|
const defaults = Options{};
|
||||||
|
|
||||||
fn getOptions(b: *std.Build) Options {
|
pub fn getOptions(b: *std.Build) Options {
|
||||||
return .{
|
return .{
|
||||||
.platform = b.option(PlatformBackend, "platform", "Choose the platform backedn for desktop target") orelse defaults.platform,
|
.platform = b.option(PlatformBackend, "platform", "Choose the platform backedn for desktop target") orelse defaults.platform,
|
||||||
.raudio = b.option(bool, "raudio", "Compile with audio support") orelse defaults.raudio,
|
.raudio = b.option(bool, "raudio", "Compile with audio support") orelse defaults.raudio,
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ int main(void)
|
||||||
|
|
||||||
// Update camera computes movement internally depending on the camera mode
|
// Update camera computes movement internally depending on the camera mode
|
||||||
// Some default standard keyboard/mouse inputs are hardcoded to simplify use
|
// Some default standard keyboard/mouse inputs are hardcoded to simplify use
|
||||||
// For advance camera controls, it's reecommended to compute camera movement manually
|
// For advanced camera controls, it's recommended to compute camera movement manually
|
||||||
UpdateCamera(&camera, cameraMode); // Update camera
|
UpdateCamera(&camera, cameraMode); // Update camera
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#version 100
|
#version 100
|
||||||
|
|
||||||
precision mediump float;
|
precision highp float;
|
||||||
|
|
||||||
#define MAX_LIGHTS 4
|
#define MAX_LIGHTS 4
|
||||||
#define LIGHT_DIRECTIONAL 0
|
#define LIGHT_DIRECTIONAL 0
|
||||||
|
|
@ -17,12 +17,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
|
||||||
|
|
@ -113,7 +113,7 @@ vec3 pbr(){
|
||||||
vec3 baseRefl = mix(vec3(0.04),albedo.rgb,metallic);
|
vec3 baseRefl = mix(vec3(0.04),albedo.rgb,metallic);
|
||||||
vec3 Lo = vec3(0.0); // acumulate lighting lum
|
vec3 Lo = vec3(0.0); // acumulate lighting lum
|
||||||
|
|
||||||
for(int i=0;i<numOfLights;++i){
|
for(int i=0;i<4;++i){
|
||||||
|
|
||||||
vec3 L = normalize(lights[i].position - fragPosition); // calc light vector
|
vec3 L = normalize(lights[i].position - fragPosition); // calc light vector
|
||||||
vec3 H = normalize(V + L); // calc halfway bisecting vector
|
vec3 H = normalize(V + L); // calc halfway bisecting vector
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,22 @@
|
||||||
#version 330
|
#version 330
|
||||||
|
|
||||||
|
// Input vertex attributes (from vertex shader)
|
||||||
in vec2 fragTexCoord;
|
in vec2 fragTexCoord;
|
||||||
in vec4 fragColor;
|
in vec4 fragColor;
|
||||||
|
|
||||||
|
// Input uniform values
|
||||||
uniform sampler2D texture0;
|
uniform sampler2D texture0;
|
||||||
uniform vec4 colDiffuse;
|
uniform vec4 colDiffuse;
|
||||||
|
|
||||||
|
// Output fragment color
|
||||||
|
//out vec4 finalColor;
|
||||||
|
|
||||||
|
// NOTE: Add here your custom variables
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 texelColor = texture2D(texture0, fragTexCoord);
|
vec4 texelColor = texture(texture0, fragTexCoord);
|
||||||
|
|
||||||
gl_FragColor = texelColor*colDiffuse*fragColor;
|
gl_FragColor = texelColor*colDiffuse*fragColor;
|
||||||
gl_FragDepth = gl_FragCoord.z;
|
gl_FragDepth = gl_FragCoord.z;
|
||||||
}
|
}
|
||||||
|
|
@ -20,22 +20,22 @@ void main()
|
||||||
float y = 1.0/resolution.y;
|
float y = 1.0/resolution.y;
|
||||||
|
|
||||||
vec4 horizEdge = vec4(0.0);
|
vec4 horizEdge = vec4(0.0);
|
||||||
horizEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y - y))*1.0;
|
horizEdge -= texture(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y - y))*1.0;
|
||||||
horizEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y ))*2.0;
|
horizEdge -= texture(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y ))*2.0;
|
||||||
horizEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y + y))*1.0;
|
horizEdge -= texture(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y + y))*1.0;
|
||||||
horizEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y - y))*1.0;
|
horizEdge += texture(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y - y))*1.0;
|
||||||
horizEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y ))*2.0;
|
horizEdge += texture(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y ))*2.0;
|
||||||
horizEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y + y))*1.0;
|
horizEdge += texture(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y + y))*1.0;
|
||||||
|
|
||||||
vec4 vertEdge = vec4(0.0);
|
vec4 vertEdge = vec4(0.0);
|
||||||
vertEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y - y))*1.0;
|
vertEdge -= texture(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y - y))*1.0;
|
||||||
vertEdge -= texture2D(texture0, vec2(fragTexCoord.x , fragTexCoord.y - y))*2.0;
|
vertEdge -= texture(texture0, vec2(fragTexCoord.x , fragTexCoord.y - y))*2.0;
|
||||||
vertEdge -= texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y - y))*1.0;
|
vertEdge -= texture(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y - y))*1.0;
|
||||||
vertEdge += texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y + y))*1.0;
|
vertEdge += texture(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y + y))*1.0;
|
||||||
vertEdge += texture2D(texture0, vec2(fragTexCoord.x , fragTexCoord.y + y))*2.0;
|
vertEdge += texture(texture0, vec2(fragTexCoord.x , fragTexCoord.y + y))*2.0;
|
||||||
vertEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y + y))*1.0;
|
vertEdge += texture(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y + y))*1.0;
|
||||||
|
|
||||||
vec3 edge = sqrt((horizEdge.rgb*horizEdge.rgb) + (vertEdge.rgb*vertEdge.rgb));
|
vec3 edge = sqrt((horizEdge.rgb*horizEdge.rgb) + (vertEdge.rgb*vertEdge.rgb));
|
||||||
|
|
||||||
finalColor = vec4(edge, texture2D(texture0, fragTexCoord).a);
|
finalColor = vec4(edge, texture(texture0, fragTexCoord).a);
|
||||||
}
|
}
|
||||||
|
|
@ -41,7 +41,7 @@ void main()
|
||||||
}
|
}
|
||||||
|
|
||||||
tc += center;
|
tc += center;
|
||||||
vec4 color = texture2D(texture0, tc/texSize)*colDiffuse*fragColor;;
|
vec4 color = texture(texture0, tc/texSize)*colDiffuse*fragColor;;
|
||||||
|
|
||||||
finalColor = vec4(color.rgb, 1.0);;
|
finalColor = vec4(color.rgb, 1.0);;
|
||||||
}
|
}
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
#if defined(PLATFORM_DESKTOP)
|
#if defined(PLATFORM_DESKTOP)
|
||||||
#define GLSL_VERSION 330
|
#define GLSL_VERSION 330
|
||||||
#else // PLATFORM_ANDROID, PLATFORM_WEB
|
#else // PLATFORM_ANDROID, PLATFORM_WEB
|
||||||
#define GLSL_VERSION 120
|
#define GLSL_VERSION 100
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdlib.h> // Required for: NULL
|
#include <stdlib.h> // Required for: NULL
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
{
|
{
|
||||||
"name": "RAYLIB_VERSION_MINOR",
|
"name": "RAYLIB_VERSION_MINOR",
|
||||||
"type": "INT",
|
"type": "INT",
|
||||||
"value": 5,
|
"value": 6,
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
{
|
{
|
||||||
"name": "RAYLIB_VERSION",
|
"name": "RAYLIB_VERSION",
|
||||||
"type": "STRING",
|
"type": "STRING",
|
||||||
"value": "5.5",
|
"value": "5.6-dev",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ return {
|
||||||
{
|
{
|
||||||
name = "RAYLIB_VERSION_MINOR",
|
name = "RAYLIB_VERSION_MINOR",
|
||||||
type = "INT",
|
type = "INT",
|
||||||
value = 5,
|
value = 6,
|
||||||
description = ""
|
description = ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -27,7 +27,7 @@ return {
|
||||||
{
|
{
|
||||||
name = "RAYLIB_VERSION",
|
name = "RAYLIB_VERSION",
|
||||||
type = "STRING",
|
type = "STRING",
|
||||||
value = "5.5",
|
value = "5.6-dev",
|
||||||
description = ""
|
description = ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ Define 002: RAYLIB_VERSION_MAJOR
|
||||||
Define 003: RAYLIB_VERSION_MINOR
|
Define 003: RAYLIB_VERSION_MINOR
|
||||||
Name: RAYLIB_VERSION_MINOR
|
Name: RAYLIB_VERSION_MINOR
|
||||||
Type: INT
|
Type: INT
|
||||||
Value: 5
|
Value: 6
|
||||||
Description:
|
Description:
|
||||||
Define 004: RAYLIB_VERSION_PATCH
|
Define 004: RAYLIB_VERSION_PATCH
|
||||||
Name: RAYLIB_VERSION_PATCH
|
Name: RAYLIB_VERSION_PATCH
|
||||||
|
|
@ -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.6-dev"
|
||||||
Description:
|
Description:
|
||||||
Define 006: __declspec(x)
|
Define 006: __declspec(x)
|
||||||
Name: __declspec(x)
|
Name: __declspec(x)
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@
|
||||||
<Defines count="57">
|
<Defines count="57">
|
||||||
<Define name="RAYLIB_H" type="GUARD" value="" desc="" />
|
<Define name="RAYLIB_H" type="GUARD" value="" desc="" />
|
||||||
<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="6" 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.6-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="" />
|
||||||
|
|
|
||||||
387
projects/VS2022/examples/models_bone_socket.vcxproj
Normal file
387
projects/VS2022/examples/models_bone_socket.vcxproj
Normal file
|
|
@ -0,0 +1,387 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug.DLL|Win32">
|
||||||
|
<Configuration>Debug.DLL</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug.DLL|x64">
|
||||||
|
<Configuration>Debug.DLL</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release.DLL|Win32">
|
||||||
|
<Configuration>Release.DLL</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release.DLL|x64">
|
||||||
|
<Configuration>Release.DLL</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>models_bone_socket</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
<ProjectName>models_bone_socket</ProjectName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\models</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<AdditionalOptions>/FS %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"</Command>
|
||||||
|
<Message>Copy Debug DLL to output directory</Message>
|
||||||
|
</PostBuildEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"</Command>
|
||||||
|
<Message>Copy Debug DLL to output directory</Message>
|
||||||
|
</PostBuildEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<RemoveUnreferencedCodeData>true</RemoveUnreferencedCodeData>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<RemoveUnreferencedCodeData>true</RemoveUnreferencedCodeData>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<RemoveUnreferencedCodeData>true</RemoveUnreferencedCodeData>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Message>Copy Release DLL to output directory</Message>
|
||||||
|
</PostBuildEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<RemoveUnreferencedCodeData>true</RemoveUnreferencedCodeData>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Message>Copy Release DLL to output directory</Message>
|
||||||
|
</PostBuildEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\..\examples\models\models_bone_socket.c" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\raylib\raylib.vcxproj">
|
||||||
|
<Project>{e89d61ac-55de-4482-afd4-df7242ebc859}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
387
projects/VS2022/examples/shaders_vertex_displacement.vcxproj
Normal file
387
projects/VS2022/examples/shaders_vertex_displacement.vcxproj
Normal file
|
|
@ -0,0 +1,387 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug.DLL|Win32">
|
||||||
|
<Configuration>Debug.DLL</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug.DLL|x64">
|
||||||
|
<Configuration>Debug.DLL</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release.DLL|Win32">
|
||||||
|
<Configuration>Release.DLL</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release.DLL|x64">
|
||||||
|
<Configuration>Release.DLL</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{CCA63A76-D9FC-4130-9F67-4D97F9770D53}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>shaders_vertex_displacement</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
<ProjectName>shaders_vertex_displacement</ProjectName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\shaders</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\shaders</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\shaders</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\shaders</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\shaders</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\shaders</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\shaders</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'">
|
||||||
|
<LocalDebuggerWorkingDirectory>$(SolutionDir)..\..\examples\shaders</LocalDebuggerWorkingDirectory>
|
||||||
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<AdditionalOptions>/FS %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"</Command>
|
||||||
|
<Message>Copy Debug DLL to output directory</Message>
|
||||||
|
</PostBuildEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug.DLL|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"</Command>
|
||||||
|
<Message>Copy Debug DLL to output directory</Message>
|
||||||
|
</PostBuildEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<RemoveUnreferencedCodeData>true</RemoveUnreferencedCodeData>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<RemoveUnreferencedCodeData>true</RemoveUnreferencedCodeData>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<RemoveUnreferencedCodeData>true</RemoveUnreferencedCodeData>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Message>Copy Release DLL to output directory</Message>
|
||||||
|
</PostBuildEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release.DLL|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(SolutionDir)..\..\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<CompileAs>CompileAsC</CompileAs>
|
||||||
|
<RemoveUnreferencedCodeData>true</RemoveUnreferencedCodeData>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<AdditionalLibraryDirectories>$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Command>xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)"</Command>
|
||||||
|
</PostBuildEvent>
|
||||||
|
<PostBuildEvent>
|
||||||
|
<Message>Copy Release DLL to output directory</Message>
|
||||||
|
</PostBuildEvent>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\..\examples\shaders\shaders_vertex_displacement.c" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\raylib\raylib.vcxproj">
|
||||||
|
<Project>{e89d61ac-55de-4482-afd4-df7242ebc859}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
|
|
@ -305,6 +305,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_shadowmap", "exampl
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_virtual_controls", "examples\core_input_virtual_controls.vcxproj", "{0981CA28-E4A5-4DF1-987F-A41D09131EFC}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_virtual_controls", "examples\core_input_virtual_controls.vcxproj", "{0981CA28-E4A5-4DF1-987F-A41D09131EFC}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_bone_socket", "examples\models_bone_socket.vcxproj", "{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_vertex_displacement", "examples\shaders_vertex_displacement.vcxproj", "{CCA63A76-D9FC-4130-9F67-4D97F9770D53}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug.DLL|x64 = Debug.DLL|x64
|
Debug.DLL|x64 = Debug.DLL|x64
|
||||||
|
|
@ -2585,6 +2589,38 @@ Global
|
||||||
{0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64
|
{0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64
|
||||||
{0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32
|
{0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32
|
||||||
{0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32
|
{0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x64.Build.0 = Release.DLL|x64
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x86.Build.0 = Release.DLL|Win32
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x64.Build.0 = Release|x64
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x64.Build.0 = Debug.DLL|x64
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x64.ActiveCfg = Release.DLL|x64
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x64.Build.0 = Release.DLL|x64
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x86.Build.0 = Release.DLL|Win32
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x64.Build.0 = Release|x64
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x86.Build.0 = Release|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
@ -2739,6 +2775,8 @@ Global
|
||||||
{8245DAD9-D402-4D5C-8F45-32229CD3B263} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C}
|
{8245DAD9-D402-4D5C-8F45-32229CD3B263} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C}
|
||||||
{41BBCC10-6FDE-48A1-B2E0-A0EC6A668629} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9}
|
{41BBCC10-6FDE-48A1-B2E0-A0EC6A668629} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9}
|
||||||
{0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035}
|
{0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035}
|
||||||
|
{3A7FE53D-35F7-49DC-9C9A-A5204A53523F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C}
|
||||||
|
{CCA63A76-D9FC-4130-9F67-4D97F9770D53} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29}
|
SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29}
|
||||||
|
|
|
||||||
51
src/config.h
51
src/config.h
|
|
@ -71,6 +71,30 @@
|
||||||
// Enabling this flag allows manual control of the frame processes, use at your own risk
|
// Enabling this flag allows manual control of the frame processes, use at your own risk
|
||||||
//#define SUPPORT_CUSTOM_FRAME_CONTROL 1
|
//#define SUPPORT_CUSTOM_FRAME_CONTROL 1
|
||||||
|
|
||||||
|
// Support for clipboard image loading
|
||||||
|
// NOTE: Only working on SDL3, GLFW (Windows) and RGFW (Windows)
|
||||||
|
#define SUPPORT_CLIPBOARD_IMAGE 1
|
||||||
|
|
||||||
|
// NOTE: Clipboard image loading requires support for some image file formats
|
||||||
|
// TODO: Those defines should probably be removed from here, I prefer to let the user manage them
|
||||||
|
#if defined(SUPPORT_CLIPBOARD_IMAGE)
|
||||||
|
#ifndef SUPPORT_MODULE_RTEXTURES
|
||||||
|
#define SUPPORT_MODULE_RTEXTURES 1
|
||||||
|
#endif
|
||||||
|
#ifndef STBI_REQUIRED
|
||||||
|
#define STBI_REQUIRED
|
||||||
|
#endif
|
||||||
|
#ifndef SUPPORT_FILEFORMAT_BMP // For clipboard image on Windows
|
||||||
|
#define SUPPORT_FILEFORMAT_BMP 1
|
||||||
|
#endif
|
||||||
|
#ifndef SUPPORT_FILEFORMAT_PNG // Wayland uses png for prints, at least it was on 22 LTS ubuntu
|
||||||
|
#define SUPPORT_FILEFORMAT_PNG 1
|
||||||
|
#endif
|
||||||
|
#ifndef SUPPORT_FILEFORMAT_JPG
|
||||||
|
#define SUPPORT_FILEFORMAT_JPG 1
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// rcore: Configuration values
|
// rcore: Configuration values
|
||||||
//------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------
|
||||||
|
|
@ -273,31 +297,4 @@
|
||||||
//------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------
|
||||||
#define MAX_TRACELOG_MSG_LENGTH 256 // Max length of one trace-log message
|
#define MAX_TRACELOG_MSG_LENGTH 256 // Max length of one trace-log message
|
||||||
|
|
||||||
|
|
||||||
// Enable partial support for clipboard image, only working on SDL3 or
|
|
||||||
// being on both Windows OS + GLFW or Windows OS + RGFW
|
|
||||||
#define SUPPORT_CLIPBOARD_IMAGE 1
|
|
||||||
|
|
||||||
#if defined(SUPPORT_CLIPBOARD_IMAGE)
|
|
||||||
#ifndef STBI_REQUIRED
|
|
||||||
#define STBI_REQUIRED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef SUPPORT_FILEFORMAT_BMP // For clipboard image on Windows
|
|
||||||
#define SUPPORT_FILEFORMAT_BMP 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef SUPPORT_FILEFORMAT_PNG // Wayland uses png for prints, at least it was on 22 LTS ubuntu
|
|
||||||
#define SUPPORT_FILEFORMAT_PNG 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef SUPPORT_FILEFORMAT_JPG
|
|
||||||
#define SUPPORT_FILEFORMAT_JPG 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef SUPPORT_MODULE_RTEXTURES
|
|
||||||
#define SUPPORT_MODULE_RTEXTURES 1
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // CONFIG_H
|
#endif // CONFIG_H
|
||||||
|
|
|
||||||
338
src/external/RGFW.h
vendored
338
src/external/RGFW.h
vendored
|
|
@ -88,6 +88,7 @@
|
||||||
Joshua Rowe (omnisci3nce) - bug fix, review (macOS)
|
Joshua Rowe (omnisci3nce) - bug fix, review (macOS)
|
||||||
@lesleyrs -> bug fix, review (OpenGL)
|
@lesleyrs -> bug fix, review (OpenGL)
|
||||||
Nick Porcino (meshula) - testing, organization, review (MacOS, examples)
|
Nick Porcino (meshula) - testing, organization, review (MacOS, examples)
|
||||||
|
@DarekParodia -> code review (X11) (C++)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if _MSC_VER
|
#if _MSC_VER
|
||||||
|
|
@ -344,12 +345,12 @@ typedef RGFW_ENUM(u8, RGFW_event_types) {
|
||||||
|
|
||||||
RGFW_Event.button holds which mouse button was pressed
|
RGFW_Event.button holds which mouse button was pressed
|
||||||
*/
|
*/
|
||||||
RGFW_jsButtonPressed, /*!< a joystick button was pressed */
|
RGFW_gpButtonPressed, /*!< a gamepad button was pressed */
|
||||||
RGFW_jsButtonReleased, /*!< a joystick button was released */
|
RGFW_gpButtonReleased, /*!< a gamepad button was released */
|
||||||
RGFW_jsAxisMove, /*!< an axis of a joystick was moved*/
|
RGFW_gpAxisMove, /*!< an axis of a gamepad was moved*/
|
||||||
/*! joystick event note
|
/*! gamepad event note
|
||||||
RGFW_Event.joystick holds which joystick was altered, if any
|
RGFW_Event.gamepad holds which gamepad was altered, if any
|
||||||
RGFW_Event.button holds which joystick button was pressed
|
RGFW_Event.button holds which gamepad button was pressed
|
||||||
|
|
||||||
RGFW_Event.axis holds the data of all the axis
|
RGFW_Event.axis holds the data of all the axis
|
||||||
RGFW_Event.axisCount says how many axis there are
|
RGFW_Event.axisCount says how many axis there are
|
||||||
|
|
@ -398,26 +399,26 @@ typedef RGFW_ENUM(u8, RGFW_event_types) {
|
||||||
#define RGFW_CAPSLOCK (1L << 1)
|
#define RGFW_CAPSLOCK (1L << 1)
|
||||||
#define RGFW_NUMLOCK (1L << 2)
|
#define RGFW_NUMLOCK (1L << 2)
|
||||||
|
|
||||||
/*! joystick button codes (based on xbox/playstation), you may need to change these values per controller */
|
/*! gamepad button codes (based on xbox/playstation), you may need to change these values per controller */
|
||||||
#ifndef RGFW_joystick_codes
|
#ifndef RGFW_gamepad_codes
|
||||||
typedef RGFW_ENUM(u8, RGFW_joystick_codes) {
|
typedef RGFW_ENUM(u8, RGFW_gamepad_codes) {
|
||||||
RGFW_JS_A = 0, /*!< or PS X button */
|
RGFW_GP_A = 0, /*!< or PS X button */
|
||||||
RGFW_JS_B = 1, /*!< or PS circle button */
|
RGFW_GP_B = 1, /*!< or PS circle button */
|
||||||
RGFW_JS_Y = 2, /*!< or PS triangle button */
|
RGFW_GP_Y = 2, /*!< or PS triangle button */
|
||||||
RGFW_JS_X = 3, /*!< or PS square button */
|
RGFW_GP_X = 3, /*!< or PS square button */
|
||||||
RGFW_JS_START = 9, /*!< start button */
|
RGFW_GP_START = 9, /*!< start button */
|
||||||
RGFW_JS_SELECT = 8, /*!< select button */
|
RGFW_GP_SELECT = 8, /*!< select button */
|
||||||
RGFW_JS_HOME = 10, /*!< home button */
|
RGFW_GP_HOME = 10, /*!< home button */
|
||||||
RGFW_JS_UP = 13, /*!< dpad up */
|
RGFW_GP_UP = 13, /*!< dpad up */
|
||||||
RGFW_JS_DOWN = 14, /*!< dpad down*/
|
RGFW_GP_DOWN = 14, /*!< dpad down*/
|
||||||
RGFW_JS_LEFT = 15, /*!< dpad left */
|
RGFW_GP_LEFT = 15, /*!< dpad left */
|
||||||
RGFW_JS_RIGHT = 16, /*!< dpad right */
|
RGFW_GP_RIGHT = 16, /*!< dpad right */
|
||||||
RGFW_JS_L1 = 4, /*!< left bump */
|
RGFW_GP_L1 = 4, /*!< left bump */
|
||||||
RGFW_JS_L2 = 5, /*!< left trigger*/
|
RGFW_GP_L2 = 5, /*!< left trigger*/
|
||||||
RGFW_JS_R1 = 6, /*!< right bumper */
|
RGFW_GP_R1 = 6, /*!< right bumper */
|
||||||
RGFW_JS_R2 = 7, /*!< right trigger */
|
RGFW_GP_R2 = 7, /*!< right trigger */
|
||||||
RGFW_JS_L3 = 11, /* left thumb stick */
|
RGFW_GP_L3 = 11, /* left thumb stick */
|
||||||
RGFW_JS_R3 = 12 /*!< right thumb stick */
|
RGFW_GP_R3 = 12 /*!< right thumb stick */
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -489,10 +490,10 @@ typedef struct RGFW_Event {
|
||||||
|
|
||||||
u8 lockState;
|
u8 lockState;
|
||||||
|
|
||||||
u8 button; /* !< which mouse (or joystick) button was pressed */
|
u8 button; /* !< which mouse (or gamepad) button was pressed */
|
||||||
double scroll; /*!< the raw mouse scroll value */
|
double scroll; /*!< the raw mouse scroll value */
|
||||||
|
|
||||||
u16 joystick; /*! which joystick this event applies to (if applicable to any) */
|
u16 gamepad; /*! which gamepad this event applies to (if applicable to any) */
|
||||||
u8 axisesCount; /*!< number of axises */
|
u8 axisesCount; /*!< number of axises */
|
||||||
|
|
||||||
u8 whichAxis; /* which axis was effected */
|
u8 whichAxis; /* which axis was effected */
|
||||||
|
|
@ -634,6 +635,8 @@ RGFWDEF void RGFW_setClassName(char* name);
|
||||||
/*! this has to be set before createWindow is called, else the fulscreen size is used */
|
/*! this has to be set before createWindow is called, else the fulscreen size is used */
|
||||||
RGFWDEF void RGFW_setBufferSize(RGFW_area size); /*!< the buffer cannot be resized (by RGFW) */
|
RGFWDEF void RGFW_setBufferSize(RGFW_area size); /*!< the buffer cannot be resized (by RGFW) */
|
||||||
|
|
||||||
|
/* NOTE: (windows)If the executable has an icon resource named RGFW_ICON, it will be set as the initial icon for the window.*/
|
||||||
|
|
||||||
RGFWDEF RGFW_window* RGFW_createWindow(
|
RGFWDEF RGFW_window* RGFW_createWindow(
|
||||||
const char* name, /* name of the window */
|
const char* name, /* name of the window */
|
||||||
RGFW_rect rect, /* rect of window */
|
RGFW_rect rect, /* rect of window */
|
||||||
|
|
@ -873,10 +876,10 @@ typedef void (* RGFW_windowrefreshfunc)(RGFW_window* win);
|
||||||
typedef void (* RGFW_keyfunc)(RGFW_window* win, u32 keycode, char keyName[16], u8 lockState, b8 pressed);
|
typedef void (* RGFW_keyfunc)(RGFW_window* win, u32 keycode, char keyName[16], u8 lockState, b8 pressed);
|
||||||
/*! RGFW_mouseButtonPressed / RGFW_mouseButtonReleased, the window that got the event, the button that was pressed, the scroll value, if it was a press (else it's a release) */
|
/*! RGFW_mouseButtonPressed / RGFW_mouseButtonReleased, the window that got the event, the button that was pressed, the scroll value, if it was a press (else it's a release) */
|
||||||
typedef void (* RGFW_mousebuttonfunc)(RGFW_window* win, u8 button, double scroll, b8 pressed);
|
typedef void (* RGFW_mousebuttonfunc)(RGFW_window* win, u8 button, double scroll, b8 pressed);
|
||||||
/*! RGFW_jsButtonPressed / RGFW_jsButtonReleased, the window that got the event, the button that was pressed, the scroll value, if it was a press (else it's a release) */
|
/*!gp /gp, the window that got the event, the button that was pressed, the scroll value, if it was a press (else it's a release) */
|
||||||
typedef void (* RGFW_jsButtonfunc)(RGFW_window* win, u16 joystick, u8 button, b8 pressed);
|
typedef void (* RGFW_gpButtonfunc)(RGFW_window* win, u16 gamepad, u8 button, b8 pressed);
|
||||||
/*! RGFW_jsAxisMove, the window that got the event, the joystick in question, the axis values and the amount of axises */
|
/*! RGFW_gpAxisMove, the window that got the event, the gamepad in question, the axis values and the amount of axises */
|
||||||
typedef void (* RGFW_jsAxisfunc)(RGFW_window* win, u16 joystick, RGFW_point axis[2], u8 axisesCount);
|
typedef void (* RGFW_gpAxisfunc)(RGFW_window* win, u16 gamepad, RGFW_point axis[2], u8 axisesCount);
|
||||||
|
|
||||||
|
|
||||||
/*! RGFW_dnd, the window that had the drop, the drop data and the amount files dropped returns previous callback function (if it was set) */
|
/*! RGFW_dnd, the window that had the drop, the drop data and the amount files dropped returns previous callback function (if it was set) */
|
||||||
|
|
@ -908,9 +911,9 @@ RGFWDEF RGFW_keyfunc RGFW_setKeyCallback(RGFW_keyfunc func);
|
||||||
/*! set callback for a mouse button (press / release ) event returns previous callback function (if it was set) */
|
/*! set callback for a mouse button (press / release ) event returns previous callback function (if it was set) */
|
||||||
RGFWDEF RGFW_mousebuttonfunc RGFW_setMouseButtonCallback(RGFW_mousebuttonfunc func);
|
RGFWDEF RGFW_mousebuttonfunc RGFW_setMouseButtonCallback(RGFW_mousebuttonfunc func);
|
||||||
/*! set callback for a controller button (press / release ) event returns previous callback function (if it was set) */
|
/*! set callback for a controller button (press / release ) event returns previous callback function (if it was set) */
|
||||||
RGFWDEF RGFW_jsButtonfunc RGFW_setjsButtonCallback(RGFW_jsButtonfunc func);
|
RGFWDEF RGFW_gpButtonfunc RGFW_setgpButtonCallback(RGFW_gpButtonfunc func);
|
||||||
/*! set callback for a joystick axis mov event returns previous callback function (if it was set) */
|
/*! set callback for a gamepad axis mov event returns previous callback function (if it was set) */
|
||||||
RGFWDEF RGFW_jsAxisfunc RGFW_setjsAxisCallback(RGFW_jsAxisfunc func);
|
RGFWDEF RGFW_gpAxisfunc RGFW_setgpAxisCallback(RGFW_gpAxisfunc func);
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
|
@ -941,15 +944,15 @@ RGFWDEF RGFW_jsAxisfunc RGFW_setjsAxisCallback(RGFW_jsAxisfunc func);
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
/** * @defgroup joystick
|
/** * @defgroup gamepad
|
||||||
* @{ */
|
* @{ */
|
||||||
|
|
||||||
/*! joystick count starts at 0*/
|
/*! gamepad count starts at 0*/
|
||||||
/*!< register joystick to window based on a number (the number is based on when it was connected eg. /dev/js0)*/
|
/*!< register gamepad to window based on a number (the number is based on when it was connected eg. /dev/js0)*/
|
||||||
RGFWDEF u16 RGFW_registerJoystick(RGFW_window* win, i32 jsNumber);
|
RGFWDEF u16 RGFW_registerGamepad(RGFW_window* win, i32 gpNumber);
|
||||||
RGFWDEF u16 RGFW_registerJoystickF(RGFW_window* win, char* file);
|
RGFWDEF u16 RGFW_registerGamepadF(RGFW_window* win, char* file);
|
||||||
|
|
||||||
RGFWDEF u32 RGFW_isPressedJS(RGFW_window* win, u16 controller, u8 button);
|
RGFWDEF u32 RGFW_isPressedGP(RGFW_window* win, u16 controller, u8 button);
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
|
@ -1446,11 +1449,11 @@ char RGFW_keyCodeToCharAuto(u32 keycode, u8 lockState) { return RGFW_keyCodeToCh
|
||||||
this is the end of keycode data
|
this is the end of keycode data
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* joystick data */
|
/* gamepad data */
|
||||||
u8 RGFW_jsPressed[4][16]; /*!< if a key is currently pressed or not (per joystick) */
|
u8 RGFW_gpPressed[4][16]; /*!< if a key is currently pressed or not (per gamepad) */
|
||||||
|
|
||||||
i32 RGFW_joysticks[4]; /*!< limit of 4 joysticks at a time */
|
i32 RGFW_gamepads[4]; /*!< limit of 4 gamepads at a time */
|
||||||
u16 RGFW_joystickCount; /*!< the actual amount of joysticks */
|
u16 RGFW_gamepadCount; /*!< the actual amount of gamepads */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
event callback defines start here
|
event callback defines start here
|
||||||
|
|
@ -1472,8 +1475,8 @@ void RGFW_dndInitfuncEMPTY(RGFW_window* win, RGFW_point point) {RGFW_UNUSED(win)
|
||||||
void RGFW_windowrefreshfuncEMPTY(RGFW_window* win) {RGFW_UNUSED(win); }
|
void RGFW_windowrefreshfuncEMPTY(RGFW_window* win) {RGFW_UNUSED(win); }
|
||||||
void RGFW_keyfuncEMPTY(RGFW_window* win, u32 keycode, char keyName[16], u8 lockState, b8 pressed) {RGFW_UNUSED(win); RGFW_UNUSED(keycode); RGFW_UNUSED(keyName); RGFW_UNUSED(lockState); RGFW_UNUSED(pressed);}
|
void RGFW_keyfuncEMPTY(RGFW_window* win, u32 keycode, char keyName[16], u8 lockState, b8 pressed) {RGFW_UNUSED(win); RGFW_UNUSED(keycode); RGFW_UNUSED(keyName); RGFW_UNUSED(lockState); RGFW_UNUSED(pressed);}
|
||||||
void RGFW_mousebuttonfuncEMPTY(RGFW_window* win, u8 button, double scroll, b8 pressed) {RGFW_UNUSED(win); RGFW_UNUSED(button); RGFW_UNUSED(scroll); RGFW_UNUSED(pressed);}
|
void RGFW_mousebuttonfuncEMPTY(RGFW_window* win, u8 button, double scroll, b8 pressed) {RGFW_UNUSED(win); RGFW_UNUSED(button); RGFW_UNUSED(scroll); RGFW_UNUSED(pressed);}
|
||||||
void RGFW_jsButtonfuncEMPTY(RGFW_window* win, u16 joystick, u8 button, b8 pressed){RGFW_UNUSED(win); RGFW_UNUSED(joystick); RGFW_UNUSED(button); RGFW_UNUSED(pressed); }
|
void RGFW_gpButtonfuncEMPTY(RGFW_window* win, u16 gamepad, u8 button, b8 pressed){RGFW_UNUSED(win); RGFW_UNUSED(gamepad); RGFW_UNUSED(button); RGFW_UNUSED(pressed); }
|
||||||
void RGFW_jsAxisfuncEMPTY(RGFW_window* win, u16 joystick, RGFW_point axis[2], u8 axisesCount){RGFW_UNUSED(win); RGFW_UNUSED(joystick); RGFW_UNUSED(axis); RGFW_UNUSED(axisesCount); }
|
void RGFW_gpAxisfuncEMPTY(RGFW_window* win, u16 gamepad, RGFW_point axis[2], u8 axisesCount){RGFW_UNUSED(win); RGFW_UNUSED(gamepad); RGFW_UNUSED(axis); RGFW_UNUSED(axisesCount); }
|
||||||
|
|
||||||
#ifdef RGFW_ALLOC_DROPFILES
|
#ifdef RGFW_ALLOC_DROPFILES
|
||||||
void RGFW_dndfuncEMPTY(RGFW_window* win, char** droppedFiles, u32 droppedFilesCount) {RGFW_UNUSED(win); RGFW_UNUSED(droppedFiles); RGFW_UNUSED(droppedFilesCount);}
|
void RGFW_dndfuncEMPTY(RGFW_window* win, char** droppedFiles, u32 droppedFilesCount) {RGFW_UNUSED(win); RGFW_UNUSED(droppedFiles); RGFW_UNUSED(droppedFilesCount);}
|
||||||
|
|
@ -1492,8 +1495,8 @@ RGFW_dndfunc RGFW_dndCallback = RGFW_dndfuncEMPTY;
|
||||||
RGFW_dndInitfunc RGFW_dndInitCallback = RGFW_dndInitfuncEMPTY;
|
RGFW_dndInitfunc RGFW_dndInitCallback = RGFW_dndInitfuncEMPTY;
|
||||||
RGFW_keyfunc RGFW_keyCallback = RGFW_keyfuncEMPTY;
|
RGFW_keyfunc RGFW_keyCallback = RGFW_keyfuncEMPTY;
|
||||||
RGFW_mousebuttonfunc RGFW_mouseButtonCallback = RGFW_mousebuttonfuncEMPTY;
|
RGFW_mousebuttonfunc RGFW_mouseButtonCallback = RGFW_mousebuttonfuncEMPTY;
|
||||||
RGFW_jsButtonfunc RGFW_jsButtonCallback = RGFW_jsButtonfuncEMPTY;
|
RGFW_gpButtonfunc RGFW_gpButtonCallback = RGFW_gpButtonfuncEMPTY;
|
||||||
RGFW_jsAxisfunc RGFW_jsAxisCallback = RGFW_jsAxisfuncEMPTY;
|
RGFW_gpAxisfunc RGFW_gpAxisCallback = RGFW_gpAxisfuncEMPTY;
|
||||||
|
|
||||||
void RGFW_window_checkEvents(RGFW_window* win, i32 waitMS) {
|
void RGFW_window_checkEvents(RGFW_window* win, i32 waitMS) {
|
||||||
RGFW_window_eventWait(win, waitMS);
|
RGFW_window_eventWait(win, waitMS);
|
||||||
|
|
@ -1564,14 +1567,14 @@ RGFW_mousebuttonfunc RGFW_setMouseButtonCallback(RGFW_mousebuttonfunc func) {
|
||||||
RGFW_mouseButtonCallback = func;
|
RGFW_mouseButtonCallback = func;
|
||||||
return prev;
|
return prev;
|
||||||
}
|
}
|
||||||
RGFW_jsButtonfunc RGFW_setjsButtonCallback(RGFW_jsButtonfunc func) {
|
RGFW_gpButtonfunc RGFW_setgpButtonCallback(RGFW_gpButtonfunc func) {
|
||||||
RGFW_jsButtonfunc prev = (RGFW_jsButtonCallback == RGFW_jsButtonfuncEMPTY) ? NULL : RGFW_jsButtonCallback;
|
RGFW_gpButtonfunc prev = (RGFW_gpButtonCallback == RGFW_gpButtonfuncEMPTY) ? NULL : RGFW_gpButtonCallback;
|
||||||
RGFW_jsButtonCallback = func;
|
RGFW_gpButtonCallback = func;
|
||||||
return prev;
|
return prev;
|
||||||
}
|
}
|
||||||
RGFW_jsAxisfunc RGFW_setjsAxisCallback(RGFW_jsAxisfunc func) {
|
RGFW_gpAxisfunc RGFW_setgpAxisCallback(RGFW_gpAxisfunc func) {
|
||||||
RGFW_jsAxisfunc prev = (RGFW_jsAxisCallback == RGFW_jsAxisfuncEMPTY) ? NULL : RGFW_jsAxisCallback;
|
RGFW_gpAxisfunc prev = (RGFW_gpAxisCallback == RGFW_gpAxisfuncEMPTY) ? NULL : RGFW_gpAxisCallback;
|
||||||
RGFW_jsAxisCallback = func;
|
RGFW_gpAxisCallback = func;
|
||||||
return prev;
|
return prev;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|
@ -1633,7 +1636,7 @@ RGFW_window* RGFW_window_basic_init(RGFW_rect rect, u16 args) {
|
||||||
win->r = rect;
|
win->r = rect;
|
||||||
win->event.inFocus = 1;
|
win->event.inFocus = 1;
|
||||||
win->event.droppedFilesCount = 0;
|
win->event.droppedFilesCount = 0;
|
||||||
RGFW_joystickCount = 0;
|
RGFW_gamepadCount = 0;
|
||||||
win->_winArgs = 0;
|
win->_winArgs = 0;
|
||||||
win->event.lockState = 0;
|
win->event.lockState = 0;
|
||||||
|
|
||||||
|
|
@ -1812,9 +1815,9 @@ u32 RGFW_window_checkFPS(RGFW_window* win, u32 fpsCap) {
|
||||||
return output_fps;
|
return output_fps;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 RGFW_isPressedJS(RGFW_window* win, u16 c, u8 button) {
|
u32 RGFW_isPressedGP(RGFW_window* win, u16 c, u8 button) {
|
||||||
RGFW_UNUSED(win);
|
RGFW_UNUSED(win);
|
||||||
return RGFW_jsPressed[c][button];
|
return RGFW_gpPressed[c][button];
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(RGFW_X11) || defined(RGFW_WINDOWS)
|
#if defined(RGFW_X11) || defined(RGFW_WINDOWS)
|
||||||
|
|
@ -2272,33 +2275,33 @@ This is where OS specific stuff starts
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
RGFW_Event* RGFW_linux_updateJoystick(RGFW_window* win) {
|
RGFW_Event* RGFW_linux_updateGamepad(RGFW_window* win) {
|
||||||
u8 i;
|
u8 i;
|
||||||
for (i = 0; i < RGFW_joystickCount; i++) {
|
for (i = 0; i < RGFW_gamepadCount; i++) {
|
||||||
struct js_event e;
|
struct js_event e;
|
||||||
|
|
||||||
|
|
||||||
if (RGFW_joysticks[i] == 0)
|
if (RGFW_gamepads[i] == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
i32 flags = fcntl(RGFW_joysticks[i], F_GETFL, 0);
|
i32 flags = fcntl(RGFW_gamepads[i], F_GETFL, 0);
|
||||||
fcntl(RGFW_joysticks[i], F_SETFL, flags | O_NONBLOCK);
|
fcntl(RGFW_gamepads[i], F_SETFL, flags | O_NONBLOCK);
|
||||||
|
|
||||||
ssize_t bytes;
|
ssize_t bytes;
|
||||||
while ((bytes = read(RGFW_joysticks[i], &e, sizeof(e))) > 0) {
|
while ((bytes = read(RGFW_gamepads[i], &e, sizeof(e))) > 0) {
|
||||||
switch (e.type) {
|
switch (e.type) {
|
||||||
case JS_EVENT_BUTTON:
|
case JS_EVENT_BUTTON:
|
||||||
win->event.type = e.value ? RGFW_jsButtonPressed : RGFW_jsButtonReleased;
|
win->event.type = e.value ? RGFW_gpButtonPressed : RGFW_gpButtonReleased;
|
||||||
win->event.button = e.number;
|
win->event.button = e.number;
|
||||||
RGFW_jsPressed[i][e.number + 1] = e.value;
|
RGFW_gpPressed[i][e.number + 1] = e.value;
|
||||||
RGFW_jsButtonCallback(win, i, e.number, e.value);
|
RGFW_gpButtonCallback(win, i, e.number, e.value);
|
||||||
|
|
||||||
return &win->event;
|
return &win->event;
|
||||||
case JS_EVENT_AXIS: {
|
case JS_EVENT_AXIS: {
|
||||||
size_t axis = e.number / 2;
|
size_t axis = e.number / 2;
|
||||||
if (axis == 2) axis = 1;
|
if (axis == 2) axis = 1;
|
||||||
|
|
||||||
ioctl(RGFW_joysticks[i], JSIOCGAXES, &win->event.axisesCount);
|
ioctl(RGFW_gamepads[i], JSIOCGAXES, &win->event.axisesCount);
|
||||||
win->event.axisesCount = 2;
|
win->event.axisesCount = 2;
|
||||||
|
|
||||||
if (axis < 3) {
|
if (axis < 3) {
|
||||||
|
|
@ -2309,10 +2312,10 @@ This is where OS specific stuff starts
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
win->event.type = RGFW_jsAxisMove;
|
win->event.type = RGFW_gpAxisMove;
|
||||||
win->event.joystick = i;
|
win->event.gamepad = i;
|
||||||
win->event.whichAxis = axis;
|
win->event.whichAxis = axis;
|
||||||
RGFW_jsAxisCallback(win, i, win->event.axis, win->event.axisesCount);
|
RGFW_gpAxisCallback(win, i, win->event.axis, win->event.axisesCount);
|
||||||
return &win->event;
|
return &win->event;
|
||||||
}
|
}
|
||||||
default: break;
|
default: break;
|
||||||
|
|
@ -2785,7 +2788,7 @@ Start of Linux / Unix defines
|
||||||
win->event.type = 0;
|
win->event.type = 0;
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
RGFW_Event* event = RGFW_linux_updateJoystick(win);
|
RGFW_Event* event = RGFW_linux_updateGamepad(win);
|
||||||
if (event != NULL)
|
if (event != NULL)
|
||||||
return event;
|
return event;
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -2805,7 +2808,7 @@ Start of Linux / Unix defines
|
||||||
|
|
||||||
u32 i;
|
u32 i;
|
||||||
win->event.type = 0;
|
win->event.type = 0;
|
||||||
|
XEvent reply = { ClientMessage };
|
||||||
|
|
||||||
switch (E.type) {
|
switch (E.type) {
|
||||||
case KeyPress:
|
case KeyPress:
|
||||||
|
|
@ -2944,7 +2947,6 @@ Start of Linux / Unix defines
|
||||||
if ((win->_winArgs & RGFW_ALLOW_DND) == 0)
|
if ((win->_winArgs & RGFW_ALLOW_DND) == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
XEvent reply = { ClientMessage };
|
|
||||||
reply.xclient.window = xdnd.source;
|
reply.xclient.window = xdnd.source;
|
||||||
reply.xclient.format = 32;
|
reply.xclient.format = 32;
|
||||||
reply.xclient.data.l[0] = (long) win->src.window;
|
reply.xclient.data.l[0] = (long) win->src.window;
|
||||||
|
|
@ -3963,8 +3965,8 @@ Start of Linux / Unix defines
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 i;
|
u8 i;
|
||||||
for (i = 0; i < RGFW_joystickCount; i++)
|
for (i = 0; i < RGFW_gamepadCount; i++)
|
||||||
close(RGFW_joysticks[i]);
|
close(RGFW_gamepads[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set cleared display / window to NULL for error checking */
|
/* set cleared display / window to NULL for error checking */
|
||||||
|
|
@ -3987,43 +3989,43 @@ Start of Linux / Unix defines
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <poll.h>
|
#include <poll.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
u16 RGFW_registerJoystickF(RGFW_window* win, char* file) {
|
u16 RGFW_registerGamepadF(RGFW_window* win, char* file) {
|
||||||
assert(win != NULL);
|
assert(win != NULL);
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
|
|
||||||
i32 js = open(file, O_RDONLY);
|
i32 js = open(file, O_RDONLY);
|
||||||
|
|
||||||
if (js && RGFW_joystickCount < 4) {
|
if (js && RGFW_gamepadCount < 4) {
|
||||||
RGFW_joystickCount++;
|
RGFW_gamepadCount++;
|
||||||
|
|
||||||
RGFW_joysticks[RGFW_joystickCount - 1] = open(file, O_RDONLY);
|
RGFW_gamepads[RGFW_gamepadCount - 1] = open(file, O_RDONLY);
|
||||||
|
|
||||||
u8 i;
|
u8 i;
|
||||||
for (i = 0; i < 16; i++)
|
for (i = 0; i < 16; i++)
|
||||||
RGFW_jsPressed[RGFW_joystickCount - 1][i] = 0;
|
RGFW_gpPressed[RGFW_gamepadCount - 1][i] = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
#ifdef RGFW_PRINT_ERRORS
|
#ifdef RGFW_PRINT_ERRORS
|
||||||
RGFW_error = 1;
|
RGFW_error = 1;
|
||||||
fprintf(stderr, "Error RGFW_registerJoystickF : Cannot open file %s\n", file);
|
fprintf(stderr, "Error RGFW_registerGamepadF : Cannot open file %s\n", file);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
return RGFW_joystickCount - 1;
|
return RGFW_gamepadCount - 1;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 RGFW_registerJoystick(RGFW_window* win, i32 jsNumber) {
|
u16 RGFW_registerGamepad(RGFW_window* win, i32 gpNumber) {
|
||||||
assert(win != NULL);
|
assert(win != NULL);
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
char file[15];
|
char file[15];
|
||||||
sprintf(file, "/dev/input/js%i", jsNumber);
|
sprintf(file, "/dev/input/js%i", gpNumber);
|
||||||
|
|
||||||
return RGFW_registerJoystickF(win, file);
|
return RGFW_registerGamepadF(win, file);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4059,7 +4061,7 @@ Start of Linux / Unix defines
|
||||||
{ ConnectionNumber(win->src.display), POLLIN, 0 },
|
{ ConnectionNumber(win->src.display), POLLIN, 0 },
|
||||||
#endif
|
#endif
|
||||||
{ RGFW_eventWait_forceStop[0], POLLIN, 0 },
|
{ RGFW_eventWait_forceStop[0], POLLIN, 0 },
|
||||||
#ifdef __linux__ /* blank space for 4 joystick files*/
|
#ifdef __linux__ /* blank space for 4 gamepad files*/
|
||||||
{ -1, POLLIN, 0 }, {-1, POLLIN, 0 }, {-1, POLLIN, 0 }, {-1, POLLIN, 0}
|
{ -1, POLLIN, 0 }, {-1, POLLIN, 0 }, {-1, POLLIN, 0 }, {-1, POLLIN, 0}
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
@ -4067,11 +4069,11 @@ Start of Linux / Unix defines
|
||||||
u8 index = 2;
|
u8 index = 2;
|
||||||
|
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
for (i = 0; i < RGFW_joystickCount; i++) {
|
for (i = 0; i < RGFW_gamepadCount; i++) {
|
||||||
if (RGFW_joysticks[i] == 0)
|
if (RGFW_gamepads[i] == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
fds[index].fd = RGFW_joysticks[i];
|
fds[index].fd = RGFW_gamepads[i];
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -4757,7 +4759,7 @@ static const struct wl_callback_listener wl_surface_frame_listener = {
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
RGFW_Event* event = RGFW_linux_updateJoystick(win);
|
RGFW_Event* event = RGFW_linux_updateGamepad(win);
|
||||||
if (event != NULL)
|
if (event != NULL)
|
||||||
return event;
|
return event;
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -5083,7 +5085,7 @@ static const struct wl_callback_listener wl_surface_frame_listener = {
|
||||||
#define wglGetSwapIntervalEXT wglGetSwapIntervalEXTSrc
|
#define wglGetSwapIntervalEXT wglGetSwapIntervalEXTSrc
|
||||||
|
|
||||||
|
|
||||||
void* RGFWjoystickApi = NULL;
|
void* RGFWgamepadApi = NULL;
|
||||||
|
|
||||||
/* these two wgl functions need to be preloaded */
|
/* these two wgl functions need to be preloaded */
|
||||||
typedef HGLRC (WINAPI *PFNWGLCREATECONTEXTATTRIBSARBPROC)(HDC hdc, HGLRC hglrc, const int *attribList);
|
typedef HGLRC (WINAPI *PFNWGLCREATECONTEXTATTRIBSARBPROC)(HDC hdc, HGLRC hglrc, const int *attribList);
|
||||||
|
|
@ -5198,22 +5200,29 @@ static HMODULE wglinstance = NULL;
|
||||||
u32 i;
|
u32 i;
|
||||||
static const char* names[] = {
|
static const char* names[] = {
|
||||||
"xinput1_4.dll",
|
"xinput1_4.dll",
|
||||||
"xinput1_3.dll",
|
|
||||||
"xinput9_1_0.dll",
|
"xinput9_1_0.dll",
|
||||||
"xinput1_2.dll",
|
"xinput1_2.dll",
|
||||||
"xinput1_1.dll"
|
"xinput1_1.dll"
|
||||||
};
|
};
|
||||||
|
|
||||||
for (i = 0; i < sizeof(names) / sizeof(const char*); i++) {
|
for (i = 0; i < sizeof(names) / sizeof(const char*) && (XInputGetStateSRC == NULL || XInputGetStateSRC != NULL); i++) {
|
||||||
RGFW_XInput_dll = LoadLibraryA(names[i]);
|
RGFW_XInput_dll = LoadLibraryA(names[i]);
|
||||||
|
|
||||||
if (RGFW_XInput_dll) {
|
if (RGFW_XInput_dll == NULL)
|
||||||
XInputGetStateSRC = (PFN_XInputGetState)(void*)GetProcAddress(RGFW_XInput_dll, "XInputGetState");
|
continue;
|
||||||
|
|
||||||
if (XInputGetStateSRC == NULL)
|
if (XInputGetStateSRC == NULL)
|
||||||
printf("Failed to load XInputGetState");
|
XInputGetStateSRC = (PFN_XInputGetState)(void*)GetProcAddress(RGFW_XInput_dll, "XInputGetState");
|
||||||
}
|
|
||||||
|
if (XInputGetKeystrokeSRC == NULL)
|
||||||
|
XInputGetKeystrokeSRC = (PFN_XInputGetKeystroke)(void*)GetProcAddress(RGFW_XInput_dll, "XInputGetKeystroke");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (XInputGetStateSRC == NULL)
|
||||||
|
printf("RGFW ERR: Failed to load XInputGetState\n");
|
||||||
|
if (XInputGetKeystrokeSRC == NULL)
|
||||||
|
printf("RGFW ERR: Failed to load XInputGetKeystroke\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -5288,7 +5297,7 @@ RGFW_UNUSED(win); /*!< if buffer rendering is not being used */
|
||||||
if (RGFW_Shcore_dll == NULL) {
|
if (RGFW_Shcore_dll == NULL) {
|
||||||
RGFW_Shcore_dll = LoadLibraryA("shcore.dll");
|
RGFW_Shcore_dll = LoadLibraryA("shcore.dll");
|
||||||
GetDpiForMonitorSRC = (PFN_GetDpiForMonitor)(void*)GetProcAddress(RGFW_Shcore_dll, "GetDpiForMonitor");
|
GetDpiForMonitorSRC = (PFN_GetDpiForMonitor)(void*)GetProcAddress(RGFW_Shcore_dll, "GetDpiForMonitor");
|
||||||
#if defined(_WIN64) || (_WIN32_WINNT >= 0x0600)
|
#if (_WIN32_WINNT >= 0x0600)
|
||||||
SetProcessDPIAware();
|
SetProcessDPIAware();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
@ -5333,6 +5342,11 @@ RGFW_UNUSED(win); /*!< if buffer rendering is not being used */
|
||||||
Class.hCursor = LoadCursor(NULL, IDC_ARROW);
|
Class.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||||
Class.lpfnWndProc = WndProc;
|
Class.lpfnWndProc = WndProc;
|
||||||
|
|
||||||
|
Class.hIcon = LoadImageA(GetModuleHandleW(NULL), "RGFW_ICON", IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARED);
|
||||||
|
if (Class.hIcon == NULL) {
|
||||||
|
Class.hIcon = LoadImageA(NULL, IDI_APPLICATION, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARED);
|
||||||
|
}
|
||||||
|
|
||||||
RegisterClassA(&Class);
|
RegisterClassA(&Class);
|
||||||
|
|
||||||
DWORD window_style = WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
|
DWORD window_style = WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
|
||||||
|
|
@ -5347,6 +5361,7 @@ RGFW_UNUSED(win); /*!< if buffer rendering is not being used */
|
||||||
} else
|
} else
|
||||||
window_style |= WS_POPUP | WS_VISIBLE | WS_SYSMENU | WS_MINIMIZEBOX;
|
window_style |= WS_POPUP | WS_VISIBLE | WS_SYSMENU | WS_MINIMIZEBOX;
|
||||||
|
|
||||||
|
|
||||||
HWND dummyWin = CreateWindowA(Class.lpszClassName, name, window_style, win->r.x, win->r.y, win->r.w, win->r.h, 0, 0, inh, 0);
|
HWND dummyWin = CreateWindowA(Class.lpszClassName, name, window_style, win->r.x, win->r.y, win->r.w, win->r.h, 0, 0, inh, 0);
|
||||||
|
|
||||||
GetWindowRect(dummyWin, &windowRect);
|
GetWindowRect(dummyWin, &windowRect);
|
||||||
|
|
@ -5637,26 +5652,27 @@ RGFW_UNUSED(win); /*!< if buffer rendering is not being used */
|
||||||
|
|
||||||
|
|
||||||
u8 RGFW_xinput2RGFW[] = {
|
u8 RGFW_xinput2RGFW[] = {
|
||||||
RGFW_JS_A, /* or PS X button */
|
RGFW_GP_A, /* or PS X button */
|
||||||
RGFW_JS_B, /* or PS circle button */
|
RGFW_GP_B, /* or PS circle button */
|
||||||
RGFW_JS_X, /* or PS square button */
|
RGFW_GP_X, /* or PS square button */
|
||||||
RGFW_JS_Y, /* or PS triangle button */
|
RGFW_GP_Y, /* or PS triangle button */
|
||||||
RGFW_JS_R1, /* right bumper */
|
RGFW_GP_R1, /* right bumper */
|
||||||
RGFW_JS_L1, /* left bump */
|
RGFW_GP_L1, /* left bump */
|
||||||
RGFW_JS_L2, /* left trigger*/
|
RGFW_GP_L2, /* left trigger*/
|
||||||
RGFW_JS_R2, /* right trigger */
|
RGFW_GP_R2, /* right trigger */
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
RGFW_JS_UP, /* dpad up */
|
RGFW_GP_UP, /* dpad up */
|
||||||
RGFW_JS_DOWN, /* dpad down*/
|
RGFW_GP_DOWN, /* dpad down*/
|
||||||
RGFW_JS_LEFT, /* dpad left */
|
RGFW_GP_LEFT, /* dpad left */
|
||||||
RGFW_JS_RIGHT, /* dpad right */
|
RGFW_GP_RIGHT, /* dpad right */
|
||||||
RGFW_JS_START, /* start button */
|
RGFW_GP_START, /* start button */
|
||||||
RGFW_JS_SELECT/* select button */
|
RGFW_GP_SELECT,/* select button */
|
||||||
|
RGFW_GP_L3,
|
||||||
|
RGFW_GP_R3,
|
||||||
};
|
};
|
||||||
|
|
||||||
static i32 RGFW_checkXInput(RGFW_window* win, RGFW_Event* e) {
|
static i32 RGFW_checkXInput(RGFW_window* win, RGFW_Event* e) {
|
||||||
RGFW_UNUSED(win)
|
RGFW_UNUSED(win)
|
||||||
|
|
||||||
size_t i;
|
size_t i;
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
XINPUT_KEYSTROKE keystroke;
|
XINPUT_KEYSTROKE keystroke;
|
||||||
|
|
@ -5670,13 +5686,13 @@ RGFW_UNUSED(win); /*!< if buffer rendering is not being used */
|
||||||
if (result != ERROR_SUCCESS)
|
if (result != ERROR_SUCCESS)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (keystroke.VirtualKey > VK_PAD_BACK)
|
if (keystroke.VirtualKey > VK_PAD_RTHUMB_PRESS)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// RGFW_jsButtonPressed + 1 = RGFW_jsButtonReleased
|
//gp + 1 = RGFW_gpButtonReleased
|
||||||
e->type = RGFW_jsButtonPressed + !(keystroke.Flags & XINPUT_KEYSTROKE_KEYDOWN);
|
e->type = RGFW_gpButtonPressed + !(keystroke.Flags & XINPUT_KEYSTROKE_KEYDOWN);
|
||||||
e->button = RGFW_xinput2RGFW[keystroke.VirtualKey - 0x5800];
|
e->button = RGFW_xinput2RGFW[keystroke.VirtualKey - 0x5800];
|
||||||
RGFW_jsPressed[i][e->button] = !(keystroke.Flags & XINPUT_KEYSTROKE_KEYDOWN);
|
RGFW_gpPressed[i][e->button] = !(keystroke.Flags & XINPUT_KEYSTROKE_KEYDOWN);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
@ -5686,6 +5702,7 @@ RGFW_UNUSED(win); /*!< if buffer rendering is not being used */
|
||||||
XInputGetState((DWORD) i, &state) == ERROR_DEVICE_NOT_CONNECTED
|
XInputGetState((DWORD) i, &state) == ERROR_DEVICE_NOT_CONNECTED
|
||||||
)
|
)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#define INPUT_DEADZONE ( 0.24f * (float)(0x7FFF) ) // Default to 24% of the +/- 32767 range. This is a reasonable default value but can be altered if needed.
|
#define INPUT_DEADZONE ( 0.24f * (float)(0x7FFF) ) // Default to 24% of the +/- 32767 range. This is a reasonable default value but can be altered if needed.
|
||||||
|
|
||||||
if ((state.Gamepad.sThumbLX < INPUT_DEADZONE &&
|
if ((state.Gamepad.sThumbLX < INPUT_DEADZONE &&
|
||||||
|
|
@ -5707,22 +5724,26 @@ RGFW_UNUSED(win); /*!< if buffer rendering is not being used */
|
||||||
}
|
}
|
||||||
|
|
||||||
e->axisesCount = 2;
|
e->axisesCount = 2;
|
||||||
RGFW_point axis1 = RGFW_POINT(state.Gamepad.sThumbLX, state.Gamepad.sThumbLY);
|
RGFW_point axis1 = RGFW_POINT(((float)state.Gamepad.sThumbLX / 32768.0f) * 100, ((float)state.Gamepad.sThumbLY / -32768.0f) * 100);
|
||||||
RGFW_point axis2 = RGFW_POINT(state.Gamepad.sThumbRX, state.Gamepad.sThumbRY);
|
RGFW_point axis2 = RGFW_POINT(((float)state.Gamepad.sThumbRX / 32768.0f) * 100, ((float)state.Gamepad.sThumbRY / -32768.0f) * 100);
|
||||||
|
|
||||||
if (axis1.x != e->axis[0].x || axis1.y != e->axis[0].y || axis2.x != e->axis[1].x || axis2.y != e->axis[1].y) {
|
if (axis1.x != e->axis[0].x || axis1.y != e->axis[0].y){
|
||||||
win->event.whichAxis = (axis1.x != e->axis[0].x || axis1.y != e->axis[0].y) ? 0 : 1;
|
win->event.whichAxis = 0;
|
||||||
|
|
||||||
e->type = RGFW_jsAxisMove;
|
e->type = RGFW_gpAxisMove;
|
||||||
|
|
||||||
e->axis[0] = axis1;
|
e->axis[0] = axis1;
|
||||||
e->axis[1] = axis2;
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
e->axis[0] = axis1;
|
if (axis2.x != e->axis[1].x || axis2.y != e->axis[1].y) {
|
||||||
|
win->event.whichAxis = 1;
|
||||||
|
e->type = RGFW_gpAxisMove;
|
||||||
e->axis[1] = axis2;
|
e->axis[1] = axis2;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -6517,19 +6538,19 @@ RGFW_UNUSED(win); /*!< if buffer rendering is not being used */
|
||||||
CloseClipboard();
|
CloseClipboard();
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 RGFW_registerJoystick(RGFW_window* win, i32 jsNumber) {
|
u16 RGFW_registerGamepad(RGFW_window* win, i32 gpNumber) {
|
||||||
assert(win != NULL);
|
assert(win != NULL);
|
||||||
|
|
||||||
RGFW_UNUSED(jsNumber)
|
RGFW_UNUSED(gpNumber)
|
||||||
|
|
||||||
return RGFW_registerJoystickF(win, (char*) "");
|
return RGFW_registerGamepadF(win, (char*) "");
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 RGFW_registerJoystickF(RGFW_window* win, char* file) {
|
u16 RGFW_registerGamepadF(RGFW_window* win, char* file) {
|
||||||
assert(win != NULL);
|
assert(win != NULL);
|
||||||
RGFW_UNUSED(file)
|
RGFW_UNUSED(file)
|
||||||
|
|
||||||
return RGFW_joystickCount - 1;
|
return RGFW_gamepadCount - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RGFW_window_moveMouse(RGFW_window* win, RGFW_point p) {
|
void RGFW_window_moveMouse(RGFW_window* win, RGFW_point p) {
|
||||||
|
|
@ -8127,20 +8148,20 @@ RGFW_UNUSED(win); /*!< if buffer rendering is not being used */
|
||||||
NSPasteBoard_setString(NSPasteboard_generalPasteboard(), text, NSPasteboardTypeString);
|
NSPasteBoard_setString(NSPasteboard_generalPasteboard(), text, NSPasteboardTypeString);
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 RGFW_registerJoystick(RGFW_window* win, i32 jsNumber) {
|
u16 RGFW_registerGamepad(RGFW_window* win, i32 gpNumber) {
|
||||||
RGFW_UNUSED(jsNumber);
|
RGFW_UNUSED(gpNumber);
|
||||||
|
|
||||||
assert(win != NULL);
|
assert(win != NULL);
|
||||||
|
|
||||||
return RGFW_registerJoystickF(win, (char*) "");
|
return RGFW_registerGamepadF(win, (char*) "");
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 RGFW_registerJoystickF(RGFW_window* win, char* file) {
|
u16 RGFW_registerGamepadF(RGFW_window* win, char* file) {
|
||||||
RGFW_UNUSED(file);
|
RGFW_UNUSED(file);
|
||||||
|
|
||||||
assert(win != NULL);
|
assert(win != NULL);
|
||||||
|
|
||||||
return RGFW_joystickCount - 1;
|
return RGFW_gamepadCount - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RGFW_OPENGL
|
#ifdef RGFW_OPENGL
|
||||||
|
|
@ -8343,17 +8364,28 @@ EM_BOOL Emscripten_on_fullscreenchange(int eventType, const EmscriptenFullscreen
|
||||||
|
|
||||||
RGFW_root->r = RGFW_RECT(0, 0, e->screenWidth, e->screenHeight);
|
RGFW_root->r = RGFW_RECT(0, 0, e->screenWidth, e->screenHeight);
|
||||||
|
|
||||||
|
EM_ASM("Module.canvas.focus();");
|
||||||
|
|
||||||
if (fullscreen == RGFW_FALSE) {
|
if (fullscreen == RGFW_FALSE) {
|
||||||
RGFW_root->r = RGFW_RECT(0, 0, ogRect.w, ogRect.h);
|
RGFW_root->r = RGFW_RECT(0, 0, ogRect.w, ogRect.h);
|
||||||
|
// emscripten_request_fullscreen("#canvas", 0);
|
||||||
|
} else {
|
||||||
|
#if __EMSCRIPTEN_major__ >= 1 && __EMSCRIPTEN_minor__ >= 29 && __EMSCRIPTEN_tiny__ >= 0
|
||||||
|
EmscriptenFullscreenStrategy FSStrat = {0};
|
||||||
|
FSStrat.scaleMode = EMSCRIPTEN_FULLSCREEN_SCALE_STRETCH;//EMSCRIPTEN_FULLSCREEN_SCALE_ASPECT;// : EMSCRIPTEN_FULLSCREEN_SCALE_STRETCH;
|
||||||
|
FSStrat.canvasResolutionScaleMode = EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_HIDEF;
|
||||||
|
FSStrat.filteringMode = EMSCRIPTEN_FULLSCREEN_FILTERING_DEFAULT;
|
||||||
|
emscripten_request_fullscreen_strategy("#canvas", 1, &FSStrat);
|
||||||
|
#else
|
||||||
|
emscripten_request_fullscreen("#canvas", 1);
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
emscripten_set_canvas_element_size("#canvas", RGFW_root->r.w, RGFW_root->r.h);
|
emscripten_set_canvas_element_size("#canvas", RGFW_root->r.w, RGFW_root->r.h);
|
||||||
|
|
||||||
#ifdef LEGACY_GL_EMULATION
|
|
||||||
EM_ASM("Module.canvas.focus()");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
RGFW_windowResizeCallback(RGFW_root, RGFW_root->r);
|
RGFW_windowResizeCallback(RGFW_root, RGFW_root->r);
|
||||||
|
|
||||||
return EM_TRUE;
|
return EM_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -8509,7 +8541,7 @@ EM_BOOL Emscripten_on_gamepad(int eventType, const EmscriptenGamepadEvent *gamep
|
||||||
if (gamepadEvent->index >= 4)
|
if (gamepadEvent->index >= 4)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
RGFW_joysticks[gamepadEvent->index] = gamepadEvent->connected;
|
RGFW_gamepads[gamepadEvent->index] = gamepadEvent->connected;
|
||||||
|
|
||||||
return 1; // The event was consumed by the callback handler
|
return 1; // The event was consumed by the callback handler
|
||||||
}
|
}
|
||||||
|
|
@ -8729,7 +8761,7 @@ RGFW_Event* RGFW_window_checkEvent(RGFW_window* win) {
|
||||||
emscripten_sample_gamepad_data();
|
emscripten_sample_gamepad_data();
|
||||||
/* check gamepads */
|
/* check gamepads */
|
||||||
for (int i = 0; (i < emscripten_get_num_gamepads()) && (i < 4); i++) {
|
for (int i = 0; (i < emscripten_get_num_gamepads()) && (i < 4); i++) {
|
||||||
if (RGFW_joysticks[i] == 0)
|
if (RGFW_gamepads[i] == 0)
|
||||||
continue;
|
continue;
|
||||||
EmscriptenGamepadEvent gamepadState;
|
EmscriptenGamepadEvent gamepadState;
|
||||||
|
|
||||||
|
|
@ -8739,11 +8771,11 @@ RGFW_Event* RGFW_window_checkEvent(RGFW_window* win) {
|
||||||
// Register buttons data for every connected gamepad
|
// Register buttons data for every connected gamepad
|
||||||
for (int j = 0; (j < gamepadState.numButtons) && (j < 16); j++) {
|
for (int j = 0; (j < gamepadState.numButtons) && (j < 16); j++) {
|
||||||
u32 map[] = {
|
u32 map[] = {
|
||||||
RGFW_JS_A, RGFW_JS_B, RGFW_JS_X, RGFW_JS_Y,
|
RGFW_GP_A, RGFW_GP_B, RGFW_GP_X, RGFW_GP_Y,
|
||||||
RGFW_JS_L1, RGFW_JS_R1, RGFW_JS_L2, RGFW_JS_R2,
|
RGFW_GP_L1, RGFW_GP_R1, RGFW_GP_L2, RGFW_GP_R2,
|
||||||
RGFW_JS_SELECT, RGFW_JS_START,
|
RGFW_GP_SELECT, RGFW_GP_START,
|
||||||
RGFW_JS_L3, RGFW_JS_R3,
|
RGFW_GP_L3, RGFW_GP_R3,
|
||||||
RGFW_JS_UP, RGFW_JS_DOWN, RGFW_JS_LEFT, RGFW_JS_RIGHT
|
RGFW_GP_UP, RGFW_GP_DOWN, RGFW_GP_LEFT, RGFW_GP_RIGHT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -8751,15 +8783,15 @@ RGFW_Event* RGFW_window_checkEvent(RGFW_window* win) {
|
||||||
if (button == 404)
|
if (button == 404)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (RGFW_jsPressed[i][button] != gamepadState.digitalButton[j]) {
|
if (RGFW_gpPressed[i][button] != gamepadState.digitalButton[j]) {
|
||||||
if (gamepadState.digitalButton[j])
|
if (gamepadState.digitalButton[j])
|
||||||
win->event.type = RGFW_jsButtonPressed;
|
win->event.type = RGFW_gpButtonPressed;
|
||||||
else
|
else
|
||||||
win->event.type = RGFW_jsButtonReleased;
|
win->event.type = RGFW_gpButtonReleased;
|
||||||
|
|
||||||
win->event.joystick = i;
|
win->event.gamepad = i;
|
||||||
win->event.button = map[j];
|
win->event.button = map[j];
|
||||||
RGFW_jsPressed[i][button] = gamepadState.digitalButton[j];
|
RGFW_gpPressed[i][button] = gamepadState.digitalButton[j];
|
||||||
return &win->event;
|
return &win->event;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -8771,8 +8803,8 @@ RGFW_Event* RGFW_window_checkEvent(RGFW_window* win) {
|
||||||
) {
|
) {
|
||||||
win->event.axis[j / 2].x = (i8)(gamepadState.axis[j] * 100.0f);
|
win->event.axis[j / 2].x = (i8)(gamepadState.axis[j] * 100.0f);
|
||||||
win->event.axis[j / 2].y = (i8)(gamepadState.axis[j + 1] * 100.0f);
|
win->event.axis[j / 2].y = (i8)(gamepadState.axis[j + 1] * 100.0f);
|
||||||
win->event.type = RGFW_jsAxisMove;
|
win->event.type = RGFW_gpAxisMove;
|
||||||
win->event.joystick = i;
|
win->event.gamepad = i;
|
||||||
win->event.whichAxis = j / 2;
|
win->event.whichAxis = j / 2;
|
||||||
return &win->event;
|
return &win->event;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -515,6 +515,16 @@ const char *GetClipboardText(void)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get clipboard image
|
||||||
|
Image GetClipboardImage(void)
|
||||||
|
{
|
||||||
|
Image image = { 0 };
|
||||||
|
|
||||||
|
TRACELOG(LOG_WARNING, "GetClipboardImage() not implemented on target platform");
|
||||||
|
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
// Show mouse cursor
|
// Show mouse cursor
|
||||||
void ShowCursor(void)
|
void ShowCursor(void)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -967,32 +967,29 @@ const char *GetClipboardText(void)
|
||||||
return glfwGetClipboardString(platform.handle);
|
return glfwGetClipboardString(platform.handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(SUPPORT_CLIPBOARD_IMAGE)
|
|
||||||
// Get clipboard image
|
// Get clipboard image
|
||||||
Image GetClipboardImage(void)
|
Image GetClipboardImage(void)
|
||||||
{
|
{
|
||||||
Image image = { 0 };
|
Image image = { 0 };
|
||||||
|
|
||||||
|
#if defined(SUPPORT_CLIPBOARD_IMAGE)
|
||||||
|
#if defined(_WIN32)
|
||||||
unsigned long long int dataSize = 0;
|
unsigned long long int dataSize = 0;
|
||||||
void *fileData = NULL;
|
void *fileData = NULL;
|
||||||
|
int width = 0;
|
||||||
|
int height = 0;
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
int width, height;
|
|
||||||
fileData = (void*)Win32GetClipboardImageData(&width, &height, &dataSize);
|
fileData = (void*)Win32GetClipboardImageData(&width, &height, &dataSize);
|
||||||
#else
|
|
||||||
TRACELOG(LOG_WARNING, "Clipboard image: PLATFORM_DESKTOP_GLFW doesn't implement `GetClipboardImage` for this OS");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (fileData == NULL)
|
if (fileData == NULL) TRACELOG(LOG_WARNING, "Clipboard image: Couldn't get clipboard data.");
|
||||||
{
|
else image = LoadImageFromMemory(".bmp", fileData, (int)dataSize);
|
||||||
TRACELOG(LOG_WARNING, "Clipboard image: Couldn't get clipboard data.");
|
#else
|
||||||
}
|
TRACELOG(LOG_WARNING, "GetClipboardImage() not implemented on target platform");
|
||||||
else
|
#endif
|
||||||
{
|
#endif // SUPPORT_CLIPBOARD_IMAGE
|
||||||
image = LoadImageFromMemory(".bmp", fileData, (int)dataSize);
|
|
||||||
}
|
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
#endif // SUPPORT_CLIPBOARD_IMAGE
|
|
||||||
|
|
||||||
// Show mouse cursor
|
// Show mouse cursor
|
||||||
void ShowCursor(void)
|
void ShowCursor(void)
|
||||||
|
|
|
||||||
|
|
@ -865,24 +865,24 @@ char RSGL_keystrToChar(const char *str)
|
||||||
return '\0';
|
return '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
int RGFW_jsConvTable[18] = {
|
int RGFW_gpConvTable[18] = {
|
||||||
[RGFW_JS_Y] = GAMEPAD_BUTTON_RIGHT_FACE_UP,
|
[RGFW_GP_Y] = GAMEPAD_BUTTON_RIGHT_FACE_UP,
|
||||||
[RGFW_JS_B] = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT,
|
[RGFW_GP_B] = GAMEPAD_BUTTON_RIGHT_FACE_RIGHT,
|
||||||
[RGFW_JS_A] = GAMEPAD_BUTTON_RIGHT_FACE_DOWN,
|
[RGFW_GP_A] = GAMEPAD_BUTTON_RIGHT_FACE_DOWN,
|
||||||
[RGFW_JS_X] = GAMEPAD_BUTTON_RIGHT_FACE_LEFT,
|
[RGFW_GP_X] = GAMEPAD_BUTTON_RIGHT_FACE_LEFT,
|
||||||
[RGFW_JS_L1] = GAMEPAD_BUTTON_LEFT_TRIGGER_1,
|
[RGFW_GP_L1] = GAMEPAD_BUTTON_LEFT_TRIGGER_1,
|
||||||
[RGFW_JS_R1] = GAMEPAD_BUTTON_RIGHT_TRIGGER_1,
|
[RGFW_GP_R1] = GAMEPAD_BUTTON_RIGHT_TRIGGER_1,
|
||||||
[RGFW_JS_L2] = GAMEPAD_BUTTON_LEFT_TRIGGER_2,
|
[RGFW_GP_L2] = GAMEPAD_BUTTON_LEFT_TRIGGER_2,
|
||||||
[RGFW_JS_R2] = GAMEPAD_BUTTON_RIGHT_TRIGGER_2,
|
[RGFW_GP_R2] = GAMEPAD_BUTTON_RIGHT_TRIGGER_2,
|
||||||
[RGFW_JS_SELECT] = GAMEPAD_BUTTON_MIDDLE_LEFT,
|
[RGFW_GP_SELECT] = GAMEPAD_BUTTON_MIDDLE_LEFT,
|
||||||
[RGFW_JS_HOME] = GAMEPAD_BUTTON_MIDDLE,
|
[RGFW_GP_HOME] = GAMEPAD_BUTTON_MIDDLE,
|
||||||
[RGFW_JS_START] = GAMEPAD_BUTTON_MIDDLE_RIGHT,
|
[RGFW_GP_START] = GAMEPAD_BUTTON_MIDDLE_RIGHT,
|
||||||
[RGFW_JS_UP] = GAMEPAD_BUTTON_LEFT_FACE_UP,
|
[RGFW_GP_UP] = GAMEPAD_BUTTON_LEFT_FACE_UP,
|
||||||
[RGFW_JS_RIGHT] = GAMEPAD_BUTTON_LEFT_FACE_RIGHT,
|
[RGFW_GP_RIGHT] = GAMEPAD_BUTTON_LEFT_FACE_RIGHT,
|
||||||
[RGFW_JS_DOWN] = GAMEPAD_BUTTON_LEFT_FACE_DOWN,
|
[RGFW_GP_DOWN] = GAMEPAD_BUTTON_LEFT_FACE_DOWN,
|
||||||
[RGFW_JS_LEFT] = GAMEPAD_BUTTON_LEFT_FACE_LEFT,
|
[RGFW_GP_LEFT] = GAMEPAD_BUTTON_LEFT_FACE_LEFT,
|
||||||
[RGFW_JS_L3] = GAMEPAD_BUTTON_LEFT_THUMB,
|
[RGFW_GP_L3] = GAMEPAD_BUTTON_LEFT_THUMB,
|
||||||
[RGFW_JS_R3] = GAMEPAD_BUTTON_RIGHT_THUMB,
|
[RGFW_GP_R3] = GAMEPAD_BUTTON_RIGHT_THUMB,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -959,15 +959,15 @@ void PollInputEvents(void)
|
||||||
|
|
||||||
while (RGFW_window_checkEvent(platform.window))
|
while (RGFW_window_checkEvent(platform.window))
|
||||||
{
|
{
|
||||||
if ((platform.window->event.type >= RGFW_jsButtonPressed) && (platform.window->event.type <= RGFW_jsAxisMove))
|
if ((platform.window->event.type >= RGFW_gpButtonPressed) && (platform.window->event.type <= RGFW_gpAxisMove))
|
||||||
{
|
{
|
||||||
if (!CORE.Input.Gamepad.ready[platform.window->event.joystick])
|
if (!CORE.Input.Gamepad.ready[platform.window->event.gamepad])
|
||||||
{
|
{
|
||||||
CORE.Input.Gamepad.ready[platform.window->event.joystick] = true;
|
CORE.Input.Gamepad.ready[platform.window->event.gamepad] = true;
|
||||||
CORE.Input.Gamepad.axisCount[platform.window->event.joystick] = platform.window->event.axisesCount;
|
CORE.Input.Gamepad.axisCount[platform.window->event.gamepad] = platform.window->event.axisesCount;
|
||||||
CORE.Input.Gamepad.name[platform.window->event.joystick][0] = '\0';
|
CORE.Input.Gamepad.name[platform.window->event.gamepad][0] = '\0';
|
||||||
CORE.Input.Gamepad.axisState[platform.window->event.joystick][GAMEPAD_AXIS_LEFT_TRIGGER] = -1.0f;
|
CORE.Input.Gamepad.axisState[platform.window->event.gamepad][GAMEPAD_AXIS_LEFT_TRIGGER] = -1.0f;
|
||||||
CORE.Input.Gamepad.axisState[platform.window->event.joystick][GAMEPAD_AXIS_RIGHT_TRIGGER] = -1.0f;
|
CORE.Input.Gamepad.axisState[platform.window->event.gamepad][GAMEPAD_AXIS_RIGHT_TRIGGER] = -1.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1112,24 +1112,24 @@ void PollInputEvents(void)
|
||||||
CORE.Input.Touch.position[0] = CORE.Input.Mouse.currentPosition;
|
CORE.Input.Touch.position[0] = CORE.Input.Mouse.currentPosition;
|
||||||
touchAction = 2;
|
touchAction = 2;
|
||||||
} break;
|
} break;
|
||||||
case RGFW_jsButtonPressed:
|
case RGFW_gpButtonPressed:
|
||||||
{
|
{
|
||||||
int button = RGFW_jsConvTable[event->button];
|
int button = RGFW_gpConvTable[event->button];
|
||||||
|
|
||||||
if (button >= 0)
|
if (button >= 0)
|
||||||
{
|
{
|
||||||
CORE.Input.Gamepad.currentButtonState[event->joystick][button] = 1;
|
CORE.Input.Gamepad.currentButtonState[event->gamepad][button] = 1;
|
||||||
CORE.Input.Gamepad.lastButtonPressed = button;
|
CORE.Input.Gamepad.lastButtonPressed = button;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case RGFW_jsButtonReleased:
|
case RGFW_gpButtonReleased:
|
||||||
{
|
{
|
||||||
int button = RGFW_jsConvTable[event->button];
|
int button = RGFW_gpConvTable[event->button];
|
||||||
|
|
||||||
CORE.Input.Gamepad.currentButtonState[event->joystick][button] = 0;
|
CORE.Input.Gamepad.currentButtonState[event->gamepad][button] = 0;
|
||||||
if (CORE.Input.Gamepad.lastButtonPressed == button) CORE.Input.Gamepad.lastButtonPressed = 0;
|
if (CORE.Input.Gamepad.lastButtonPressed == button) CORE.Input.Gamepad.lastButtonPressed = 0;
|
||||||
} break;
|
} break;
|
||||||
case RGFW_jsAxisMove:
|
case RGFW_gpAxisMove:
|
||||||
{
|
{
|
||||||
int axis = -1;
|
int axis = -1;
|
||||||
|
|
||||||
|
|
@ -1137,19 +1137,19 @@ void PollInputEvents(void)
|
||||||
switch(event->whichAxis) {
|
switch(event->whichAxis) {
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
CORE.Input.Gamepad.axisState[event->joystick][GAMEPAD_AXIS_LEFT_X] = event->axis[0].x / 100.0f;
|
CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_LEFT_X] = event->axis[0].x / 100.0f;
|
||||||
CORE.Input.Gamepad.axisState[event->joystick][GAMEPAD_AXIS_LEFT_Y] = event->axis[0].y / 100.0f;
|
CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_LEFT_Y] = event->axis[0].y / 100.0f;
|
||||||
} break;
|
} break;
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
CORE.Input.Gamepad.axisState[event->joystick][GAMEPAD_AXIS_RIGHT_X] = event->axis[1].x / 100.0f;
|
CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_RIGHT_X] = event->axis[1].x / 100.0f;
|
||||||
CORE.Input.Gamepad.axisState[event->joystick][GAMEPAD_AXIS_RIGHT_Y] = event->axis[1].y / 100.0f;
|
CORE.Input.Gamepad.axisState[event->gamepad][GAMEPAD_AXIS_RIGHT_Y] = event->axis[1].y / 100.0f;
|
||||||
} break;
|
} break;
|
||||||
case 2: axis = GAMEPAD_AXIS_LEFT_TRIGGER;
|
case 2: axis = GAMEPAD_AXIS_LEFT_TRIGGER;
|
||||||
case 3: { if (axis == -1) axis = GAMEPAD_AXIS_RIGHT_TRIGGER;
|
case 3: { if (axis == -1) axis = GAMEPAD_AXIS_RIGHT_TRIGGER;
|
||||||
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->gamepad][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;
|
||||||
|
|
@ -1316,7 +1316,7 @@ int InitPlatform(void)
|
||||||
#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_registergamepad(platform.window, i);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,6 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
// Types and Structures Definition
|
// Types and Structures Definition
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
|
|
@ -240,7 +239,7 @@ static const int CursorsLUT[] = {
|
||||||
|
|
||||||
|
|
||||||
// SDL3 Migration Layer made to avoid `ifdefs` inside functions when we can.
|
// SDL3 Migration Layer made to avoid `ifdefs` inside functions when we can.
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3
|
#if defined(PLATFORM_DESKTOP_SDL3)
|
||||||
|
|
||||||
// SDL3 Migration:
|
// SDL3 Migration:
|
||||||
// SDL_WINDOW_FULLSCREEN_DESKTOP has been removed,
|
// SDL_WINDOW_FULLSCREEN_DESKTOP has been removed,
|
||||||
|
|
@ -249,7 +248,6 @@ static const int CursorsLUT[] = {
|
||||||
// or the borderless fullscreen desktop mode will be used
|
// or the borderless fullscreen desktop mode will be used
|
||||||
#define SDL_WINDOW_FULLSCREEN_DESKTOP SDL_WINDOW_FULLSCREEN
|
#define SDL_WINDOW_FULLSCREEN_DESKTOP SDL_WINDOW_FULLSCREEN
|
||||||
|
|
||||||
|
|
||||||
#define SDL_IGNORE false
|
#define SDL_IGNORE false
|
||||||
#define SDL_DISABLE false
|
#define SDL_DISABLE false
|
||||||
#define SDL_ENABLE true
|
#define SDL_ENABLE true
|
||||||
|
|
@ -260,27 +258,29 @@ static const int CursorsLUT[] = {
|
||||||
// SDL3 Migration: The SDL_WINDOW_SHOWN flag has been removed. Windows are shown by default and can be created hidden by using the SDL_WINDOW_HIDDEN flag.
|
// SDL3 Migration: The SDL_WINDOW_SHOWN flag has been removed. Windows are shown by default and can be created hidden by using the SDL_WINDOW_HIDDEN flag.
|
||||||
#define SDL_WINDOW_SHOWN 0x0 // It's a flag, so no problem in setting it to zero if we use in a bitor (|)
|
#define SDL_WINDOW_SHOWN 0x0 // It's a flag, so no problem in setting it to zero if we use in a bitor (|)
|
||||||
|
|
||||||
//
|
|
||||||
// SDL3 Migration: Renamed
|
// SDL3 Migration: Renamed
|
||||||
// IMPORTANT:
|
// IMPORTANT: Might need to call SDL_CleanupEvent somewhere see :https://github.com/libsdl-org/SDL/issues/3540#issuecomment-1793449852
|
||||||
// Might need to call SDL_CleanupEvent somewhere see :https://github.com/libsdl-org/SDL/issues/3540#issuecomment-1793449852
|
|
||||||
//
|
|
||||||
#define SDL_DROPFILE SDL_EVENT_DROP_FILE
|
#define SDL_DROPFILE SDL_EVENT_DROP_FILE
|
||||||
|
|
||||||
|
// SDL2 implementation for SDL3 function
|
||||||
const char *SDL_GameControllerNameForIndex(int joystickIndex)
|
const char *SDL_GameControllerNameForIndex(int joystickIndex)
|
||||||
{
|
{
|
||||||
// NOTE: SDL3 uses the IDs itself (SDL_JoystickID) instead of SDL2 joystick_index
|
// NOTE: SDL3 uses the IDs itself (SDL_JoystickID) instead of SDL2 joystick_index
|
||||||
const char *name = NULL;
|
const char *name = NULL;
|
||||||
int numJoysticks = 0;
|
int numJoysticks = 0;
|
||||||
SDL_JoystickID *joysticks = SDL_GetJoysticks(&numJoysticks);
|
SDL_JoystickID *joysticks = SDL_GetJoysticks(&numJoysticks);
|
||||||
if (joysticks) {
|
|
||||||
if (joystickIndex < numJoysticks) {
|
if (joysticks)
|
||||||
|
{
|
||||||
|
if (joystickIndex < numJoysticks)
|
||||||
|
{
|
||||||
SDL_JoystickID instance_id = joysticks[joystickIndex];
|
SDL_JoystickID instance_id = joysticks[joystickIndex];
|
||||||
name = SDL_GetGamepadNameForID(instance_id);
|
name = SDL_GetGamepadNameForID(instance_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_free(joysticks);
|
SDL_free(joysticks);
|
||||||
}
|
}
|
||||||
|
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -288,45 +288,40 @@ int SDL_GetNumVideoDisplays(void)
|
||||||
{
|
{
|
||||||
int monitorCount = 0;
|
int monitorCount = 0;
|
||||||
SDL_DisplayID *displays = SDL_GetDisplays(&monitorCount);
|
SDL_DisplayID *displays = SDL_GetDisplays(&monitorCount);
|
||||||
// Safe because If `mem` is NULL, SDL_free does nothing.
|
|
||||||
|
// Safe because If `mem` is NULL, SDL_free does nothing
|
||||||
SDL_free(displays);
|
SDL_free(displays);
|
||||||
|
|
||||||
return monitorCount;
|
return monitorCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SLD3 Migration: To emulate SDL2 this function should return `SDL_DISABLE` or `SDL_ENABLE`
|
||||||
// SLD3 Migration:
|
// representing the *processing state* of the event before this function makes any changes to it
|
||||||
// To emulate SDL2 this function should return `SDL_DISABLE` or `SDL_ENABLE`
|
Uint8 SDL_EventState(Uint32 type, int state)
|
||||||
// representing the *processing state* of the event before this function makes any changes to it.
|
{
|
||||||
Uint8 SDL_EventState(Uint32 type, int state) {
|
|
||||||
|
|
||||||
Uint8 stateBefore = SDL_EventEnabled(type);
|
Uint8 stateBefore = SDL_EventEnabled(type);
|
||||||
|
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case SDL_DISABLE: SDL_SetEventEnabled(type, false); break;
|
case SDL_DISABLE: SDL_SetEventEnabled(type, false); break;
|
||||||
case SDL_ENABLE: SDL_SetEventEnabled(type, true); break;
|
case SDL_ENABLE: SDL_SetEventEnabled(type, true); break;
|
||||||
default: TRACELOG(LOG_WARNING, "Event sate: unknow type");
|
default: TRACELOG(LOG_WARNING, "Event sate: unknow type");
|
||||||
}
|
}
|
||||||
|
|
||||||
return stateBefore;
|
return stateBefore;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_GetCurrentDisplayMode_Adapter(SDL_DisplayID displayID, SDL_DisplayMode* mode)
|
void SDL_GetCurrentDisplayMode_Adapter(SDL_DisplayID displayID, SDL_DisplayMode* mode)
|
||||||
{
|
{
|
||||||
const SDL_DisplayMode* currMode = SDL_GetCurrentDisplayMode(displayID);
|
const SDL_DisplayMode* currMode = SDL_GetCurrentDisplayMode(displayID);
|
||||||
if (currMode == NULL)
|
|
||||||
{
|
if (currMode == NULL) TRACELOG(LOG_WARNING, "No current display mode");
|
||||||
TRACELOG(LOG_WARNING, "No current display mode");
|
else *mode = *currMode;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*mode = *currMode;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SDL3 Migration: Renamed
|
// SDL3 Migration: Renamed
|
||||||
#define SDL_GetCurrentDisplayMode SDL_GetCurrentDisplayMode_Adapter
|
#define SDL_GetCurrentDisplayMode SDL_GetCurrentDisplayMode_Adapter
|
||||||
|
|
||||||
|
|
||||||
SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask)
|
SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask)
|
||||||
{
|
{
|
||||||
return SDL_CreateSurface(width, height, SDL_GetPixelFormatForMasks(depth, Rmask, Gmask, Bmask, Amask));
|
return SDL_CreateSurface(width, height, SDL_GetPixelFormatForMasks(depth, Rmask, Gmask, Bmask, Amask));
|
||||||
|
|
@ -337,11 +332,14 @@ SDL_Surface *SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth
|
||||||
// not reliable across platforms, approximately replaced by multiplying
|
// not reliable across platforms, approximately replaced by multiplying
|
||||||
// SDL_GetWindowDisplayScale() times 160 on iPhone and Android, and 96 on other platforms.
|
// SDL_GetWindowDisplayScale() times 160 on iPhone and Android, and 96 on other platforms.
|
||||||
// returns 0 on success or a negative error code on failure
|
// returns 0 on success or a negative error code on failure
|
||||||
int SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi) {
|
int SDL_GetDisplayDPI(int displayIndex, float *ddpi, float *hdpi, float *vdpi)
|
||||||
|
{
|
||||||
float dpi = SDL_GetWindowDisplayScale(platform.window)*96.0;
|
float dpi = SDL_GetWindowDisplayScale(platform.window)*96.0;
|
||||||
|
|
||||||
if (ddpi != NULL) *ddpi = dpi;
|
if (ddpi != NULL) *ddpi = dpi;
|
||||||
if (hdpi != NULL) *hdpi = dpi;
|
if (hdpi != NULL) *hdpi = dpi;
|
||||||
if (vdpi != NULL) *vdpi = dpi;
|
if (vdpi != NULL) *vdpi = dpi;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -368,17 +366,13 @@ int SDL_NumJoysticks(void)
|
||||||
return numJoysticks;
|
return numJoysticks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// SDL_SetRelativeMouseMode
|
// SDL_SetRelativeMouseMode
|
||||||
// returns 0 on success or a negative error code on failure
|
// returns 0 on success or a negative error code on failure
|
||||||
// If relative mode is not supported, this returns -1.
|
// If relative mode is not supported, this returns -1.
|
||||||
int SDL_SetRelativeMouseMode_Adapter(SDL_bool enabled)
|
int SDL_SetRelativeMouseMode_Adapter(SDL_bool enabled)
|
||||||
{
|
{
|
||||||
|
|
||||||
//
|
|
||||||
// SDL_SetWindowRelativeMouseMode(SDL_Window *window, bool enabled)
|
// SDL_SetWindowRelativeMouseMode(SDL_Window *window, bool enabled)
|
||||||
// \returns true on success or false on failure; call SDL_GetError() for more
|
// \returns true on success or false on failure; call SDL_GetError() for more
|
||||||
//
|
|
||||||
if (SDL_SetWindowRelativeMouseMode(platform.window, enabled))
|
if (SDL_SetWindowRelativeMouseMode(platform.window, enabled))
|
||||||
{
|
{
|
||||||
return 0; // success
|
return 0; // success
|
||||||
|
|
@ -398,7 +392,6 @@ bool SDL_GetRelativeMouseMode_Adapter(void)
|
||||||
|
|
||||||
#define SDL_GetRelativeMouseMode SDL_GetRelativeMouseMode_Adapter
|
#define SDL_GetRelativeMouseMode SDL_GetRelativeMouseMode_Adapter
|
||||||
|
|
||||||
|
|
||||||
int SDL_GetNumTouchFingers(SDL_TouchID touchID)
|
int SDL_GetNumTouchFingers(SDL_TouchID touchID)
|
||||||
{
|
{
|
||||||
// SDL_Finger **SDL_GetTouchFingers(SDL_TouchID touchID, int *count)
|
// SDL_Finger **SDL_GetTouchFingers(SDL_TouchID touchID, int *count)
|
||||||
|
|
@ -412,16 +405,16 @@ int SDL_GetNumTouchFingers(SDL_TouchID touchID)
|
||||||
|
|
||||||
// Since SDL2 doesn't have this function we leave a stub
|
// Since SDL2 doesn't have this function we leave a stub
|
||||||
// SDL_GetClipboardData function is available since SDL 3.1.3. (e.g. SDL3)
|
// SDL_GetClipboardData function is available since SDL 3.1.3. (e.g. SDL3)
|
||||||
void* SDL_GetClipboardData(const char *mime_type, size_t *size) {
|
void* SDL_GetClipboardData(const char *mime_type, size_t *size)
|
||||||
|
{
|
||||||
TRACELOG(LOG_WARNING, "Getting clipboard data that is not text is only available in SDL3");
|
TRACELOG(LOG_WARNING, "Getting clipboard data that is not text is only available in SDL3");
|
||||||
|
|
||||||
// We could possibly implement it ourselves in this case for some easier platforms
|
// We could possibly implement it ourselves in this case for some easier platforms
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // PLATFORM_DESKTOP_SDL3
|
#endif // PLATFORM_DESKTOP_SDL3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
// Module Internal Functions Declaration
|
// Module Internal Functions Declaration
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
|
|
@ -452,7 +445,7 @@ void ToggleFullscreen(void)
|
||||||
const int monitor = SDL_GetWindowDisplayIndex(platform.window);
|
const int monitor = SDL_GetWindowDisplayIndex(platform.window);
|
||||||
const int monitorCount = SDL_GetNumVideoDisplays();
|
const int monitorCount = SDL_GetNumVideoDisplays();
|
||||||
|
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3 // SDL3 Migration: Monitor is an id instead of index now, returns 0 on failure
|
#if defined(PLATFORM_DESKTOP_SDL3) // SDL3 Migration: Monitor is an id instead of index now, returns 0 on failure
|
||||||
if ((monitor > 0) && (monitor <= monitorCount))
|
if ((monitor > 0) && (monitor <= monitorCount))
|
||||||
#else
|
#else
|
||||||
if ((monitor >= 0) && (monitor < monitorCount))
|
if ((monitor >= 0) && (monitor < monitorCount))
|
||||||
|
|
@ -479,7 +472,8 @@ void ToggleBorderlessWindowed(void)
|
||||||
{
|
{
|
||||||
const int monitor = SDL_GetWindowDisplayIndex(platform.window);
|
const int monitor = SDL_GetWindowDisplayIndex(platform.window);
|
||||||
const int monitorCount = SDL_GetNumVideoDisplays();
|
const int monitorCount = SDL_GetNumVideoDisplays();
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3 // SDL3 Migration: Monitor is an id instead of index now, returns 0 on failure
|
|
||||||
|
#if defined(PLATFORM_DESKTOP_SDL3) // SDL3 Migration: Monitor is an id instead of index now, returns 0 on failure
|
||||||
if ((monitor > 0) && (monitor <= monitorCount))
|
if ((monitor > 0) && (monitor <= monitorCount))
|
||||||
#else
|
#else
|
||||||
if ((monitor >= 0) && (monitor < monitorCount))
|
if ((monitor >= 0) && (monitor < monitorCount))
|
||||||
|
|
@ -532,7 +526,8 @@ void SetWindowState(unsigned int flags)
|
||||||
{
|
{
|
||||||
const int monitor = SDL_GetWindowDisplayIndex(platform.window);
|
const int monitor = SDL_GetWindowDisplayIndex(platform.window);
|
||||||
const int monitorCount = SDL_GetNumVideoDisplays();
|
const int monitorCount = SDL_GetNumVideoDisplays();
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3 // SDL3 Migration: Monitor is an id instead of index now, returns 0 on failure
|
|
||||||
|
#if defined(PLATFORM_DESKTOP_SDL3) // SDL3 Migration: Monitor is an id instead of index now, returns 0 on failure
|
||||||
if ((monitor > 0) && (monitor <= monitorCount))
|
if ((monitor > 0) && (monitor <= monitorCount))
|
||||||
#else
|
#else
|
||||||
if ((monitor >= 0) && (monitor < monitorCount))
|
if ((monitor >= 0) && (monitor < monitorCount))
|
||||||
|
|
@ -595,7 +590,8 @@ void SetWindowState(unsigned int flags)
|
||||||
{
|
{
|
||||||
const int monitor = SDL_GetWindowDisplayIndex(platform.window);
|
const int monitor = SDL_GetWindowDisplayIndex(platform.window);
|
||||||
const int monitorCount = SDL_GetNumVideoDisplays();
|
const int monitorCount = SDL_GetNumVideoDisplays();
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3 // SDL3 Migration: Monitor is an id instead of index now, returns 0 on failure
|
|
||||||
|
#if defined(PLATFORM_DESKTOP_SDL3) // SDL3 Migration: Monitor is an id instead of index now, returns 0 on failure
|
||||||
if ((monitor > 0) && (monitor <= monitorCount))
|
if ((monitor > 0) && (monitor <= monitorCount))
|
||||||
#else
|
#else
|
||||||
if ((monitor >= 0) && (monitor < monitorCount))
|
if ((monitor >= 0) && (monitor < monitorCount))
|
||||||
|
|
@ -818,7 +814,8 @@ void SetWindowMonitor(int monitor)
|
||||||
const int screenWidth = CORE.Window.screen.width;
|
const int screenWidth = CORE.Window.screen.width;
|
||||||
const int screenHeight = CORE.Window.screen.height;
|
const int screenHeight = CORE.Window.screen.height;
|
||||||
SDL_Rect usableBounds;
|
SDL_Rect usableBounds;
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3 // Different style for success checking
|
|
||||||
|
#if defined(PLATFORM_DESKTOP_SDL3) // Different style for success checking
|
||||||
if (SDL_GetDisplayUsableBounds(monitor, &usableBounds))
|
if (SDL_GetDisplayUsableBounds(monitor, &usableBounds))
|
||||||
#else
|
#else
|
||||||
if (SDL_GetDisplayUsableBounds(monitor, &usableBounds) == 0)
|
if (SDL_GetDisplayUsableBounds(monitor, &usableBounds) == 0)
|
||||||
|
|
@ -933,7 +930,8 @@ Vector2 GetMonitorPosition(int monitor)
|
||||||
if ((monitor >= 0) && (monitor < monitorCount))
|
if ((monitor >= 0) && (monitor < monitorCount))
|
||||||
{
|
{
|
||||||
SDL_Rect displayBounds;
|
SDL_Rect displayBounds;
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3
|
|
||||||
|
#if defined(PLATFORM_DESKTOP_SDL3)
|
||||||
if (SDL_GetDisplayUsableBounds(monitor, &displayBounds))
|
if (SDL_GetDisplayUsableBounds(monitor, &displayBounds))
|
||||||
#else
|
#else
|
||||||
if (SDL_GetDisplayUsableBounds(monitor, &displayBounds) == 0)
|
if (SDL_GetDisplayUsableBounds(monitor, &displayBounds) == 0)
|
||||||
|
|
@ -1104,53 +1102,55 @@ const char *GetClipboardText(void)
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if defined(SUPPORT_CLIPBOARD_IMAGE)
|
|
||||||
// Get clipboard image
|
// Get clipboard image
|
||||||
Image GetClipboardImage(void)
|
Image GetClipboardImage(void)
|
||||||
{
|
{
|
||||||
|
Image image = { 0 };
|
||||||
|
|
||||||
|
#if defined(SUPPORT_CLIPBOARD_IMAGE)
|
||||||
// Let's hope compiler put these arrays in static memory
|
// Let's hope compiler put these arrays in static memory
|
||||||
const char *image_formats[] = {
|
const char *imageFormats[] = {
|
||||||
"image/bmp",
|
"image/bmp",
|
||||||
"image/png",
|
"image/png",
|
||||||
"image/jpg",
|
"image/jpg",
|
||||||
"image/tiff",
|
"image/tiff",
|
||||||
};
|
};
|
||||||
const char *image_extensions[] = {
|
const char *imageExtensions[] = {
|
||||||
".bmp",
|
".bmp",
|
||||||
".png",
|
".png",
|
||||||
".jpg",
|
".jpg",
|
||||||
".tiff",
|
".tiff",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
Image image = {0};
|
|
||||||
size_t dataSize = 0;
|
size_t dataSize = 0;
|
||||||
void *fileData = NULL;
|
void *fileData = NULL;
|
||||||
for (int i = 0; i < SDL_arraysize(image_formats); ++i)
|
|
||||||
|
for (int i = 0; i < SDL_arraysize(imageFormats); ++i)
|
||||||
{
|
{
|
||||||
// NOTE: This pointer should be free with SDL_free() at some point.
|
// NOTE: This pointer should be free with SDL_free() at some point
|
||||||
fileData = SDL_GetClipboardData(image_formats[i], &dataSize);
|
fileData = SDL_GetClipboardData(imageFormats[i], &dataSize);
|
||||||
if (fileData) {
|
|
||||||
image = LoadImageFromMemory(image_extensions[i], fileData, dataSize);
|
if (fileData)
|
||||||
|
{
|
||||||
|
image = LoadImageFromMemory(imageExtensions[i], fileData, dataSize);
|
||||||
if (IsImageValid(image))
|
if (IsImageValid(image))
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_INFO, "Clipboard image: Got image from clipboard as a `%s` successfully", image_extensions[i]);
|
TRACELOG(LOG_INFO, "Clipboard image: Got image from clipboard as a `%s` successfully", imageExtensions[i]);
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACELOG(LOG_WARNING, "Clipboard image: Couldn't get clipboard data. %s", SDL_GetError());
|
if (!IsImageValid(image)) TRACELOG(LOG_WARNING, "Clipboard image: Couldn't get clipboard data. Error: %s", SDL_GetError());
|
||||||
return image;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
// Show mouse cursor
|
// Show mouse cursor
|
||||||
void ShowCursor(void)
|
void ShowCursor(void)
|
||||||
{
|
{
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3
|
#if defined(PLATFORM_DESKTOP_SDL3)
|
||||||
SDL_ShowCursor();
|
SDL_ShowCursor();
|
||||||
#else
|
#else
|
||||||
SDL_ShowCursor(SDL_ENABLE);
|
SDL_ShowCursor(SDL_ENABLE);
|
||||||
|
|
@ -1161,7 +1161,7 @@ void ShowCursor(void)
|
||||||
// Hides mouse cursor
|
// Hides mouse cursor
|
||||||
void HideCursor(void)
|
void HideCursor(void)
|
||||||
{
|
{
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3
|
#if defined(PLATFORM_DESKTOP_SDL3)
|
||||||
SDL_HideCursor();
|
SDL_HideCursor();
|
||||||
#else
|
#else
|
||||||
SDL_ShowCursor(SDL_DISABLE);
|
SDL_ShowCursor(SDL_DISABLE);
|
||||||
|
|
@ -1174,7 +1174,7 @@ void EnableCursor(void)
|
||||||
{
|
{
|
||||||
SDL_SetRelativeMouseMode(SDL_FALSE);
|
SDL_SetRelativeMouseMode(SDL_FALSE);
|
||||||
|
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3
|
#if defined(PLATFORM_DESKTOP_SDL3)
|
||||||
// SDL_ShowCursor() has been split into three functions: SDL_ShowCursor(), SDL_HideCursor(), and SDL_CursorVisible()
|
// SDL_ShowCursor() has been split into three functions: SDL_ShowCursor(), SDL_HideCursor(), and SDL_CursorVisible()
|
||||||
SDL_ShowCursor();
|
SDL_ShowCursor();
|
||||||
#else
|
#else
|
||||||
|
|
@ -1275,7 +1275,7 @@ const char *GetKeyName(int key)
|
||||||
|
|
||||||
static void UpdateTouchPointsSDL(SDL_TouchFingerEvent event)
|
static void UpdateTouchPointsSDL(SDL_TouchFingerEvent event)
|
||||||
{
|
{
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3 // SDL3
|
#if defined(PLATFORM_DESKTOP_SDL3) // SDL3
|
||||||
int count = 0;
|
int count = 0;
|
||||||
SDL_Finger **fingers = SDL_GetTouchFingers(event.touchID, &count);
|
SDL_Finger **fingers = SDL_GetTouchFingers(event.touchID, &count);
|
||||||
CORE.Input.Touch.pointCount = count;
|
CORE.Input.Touch.pointCount = count;
|
||||||
|
|
@ -1288,7 +1288,9 @@ static void UpdateTouchPointsSDL(SDL_TouchFingerEvent event)
|
||||||
CORE.Input.Touch.position[i].y = finger->y*CORE.Window.screen.height;
|
CORE.Input.Touch.position[i].y = finger->y*CORE.Window.screen.height;
|
||||||
CORE.Input.Touch.currentTouchState[i] = 1;
|
CORE.Input.Touch.currentTouchState[i] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_free(fingers);
|
SDL_free(fingers);
|
||||||
|
|
||||||
#else // SDL2
|
#else // SDL2
|
||||||
|
|
||||||
CORE.Input.Touch.pointCount = SDL_GetNumTouchFingers(event.touchId);
|
CORE.Input.Touch.pointCount = SDL_GetNumTouchFingers(event.touchId);
|
||||||
|
|
@ -1393,7 +1395,8 @@ void PollInputEvents(void)
|
||||||
CORE.Window.dropFilepaths = (char **)RL_CALLOC(1024, sizeof(char *));
|
CORE.Window.dropFilepaths = (char **)RL_CALLOC(1024, sizeof(char *));
|
||||||
|
|
||||||
CORE.Window.dropFilepaths[CORE.Window.dropFileCount] = (char *)RL_CALLOC(MAX_FILEPATH_LENGTH, sizeof(char));
|
CORE.Window.dropFilepaths[CORE.Window.dropFileCount] = (char *)RL_CALLOC(MAX_FILEPATH_LENGTH, sizeof(char));
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3
|
|
||||||
|
#if defined(PLATFORM_DESKTOP_SDL3)
|
||||||
// const char *data; /**< The text for SDL_EVENT_DROP_TEXT and the file name for SDL_EVENT_DROP_FILE, NULL for other events */
|
// const char *data; /**< The text for SDL_EVENT_DROP_TEXT and the file name for SDL_EVENT_DROP_FILE, NULL for other events */
|
||||||
// Event memory is now managed by SDL, so you should not free the data in SDL_EVENT_DROP_FILE, and if you want to hold onto the text in SDL_EVENT_TEXT_EDITING and SDL_EVENT_TEXT_INPUT events, you should make a copy of it. SDL_TEXTINPUTEVENT_TEXT_SIZE is no longer necessary and has been removed.
|
// Event memory is now managed by SDL, so you should not free the data in SDL_EVENT_DROP_FILE, and if you want to hold onto the text in SDL_EVENT_TEXT_EDITING and SDL_EVENT_TEXT_INPUT events, you should make a copy of it. SDL_TEXTINPUTEVENT_TEXT_SIZE is no longer necessary and has been removed.
|
||||||
strcpy(CORE.Window.dropFilepaths[CORE.Window.dropFileCount], event.drop.data);
|
strcpy(CORE.Window.dropFilepaths[CORE.Window.dropFileCount], event.drop.data);
|
||||||
|
|
@ -1407,7 +1410,8 @@ void PollInputEvents(void)
|
||||||
else if (CORE.Window.dropFileCount < 1024)
|
else if (CORE.Window.dropFileCount < 1024)
|
||||||
{
|
{
|
||||||
CORE.Window.dropFilepaths[CORE.Window.dropFileCount] = (char *)RL_CALLOC(MAX_FILEPATH_LENGTH, sizeof(char));
|
CORE.Window.dropFilepaths[CORE.Window.dropFileCount] = (char *)RL_CALLOC(MAX_FILEPATH_LENGTH, sizeof(char));
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3
|
|
||||||
|
#if defined(PLATFORM_DESKTOP_SDL3)
|
||||||
strcpy(CORE.Window.dropFilepaths[CORE.Window.dropFileCount], event.drop.data);
|
strcpy(CORE.Window.dropFilepaths[CORE.Window.dropFileCount], event.drop.data);
|
||||||
#else
|
#else
|
||||||
strcpy(CORE.Window.dropFilepaths[CORE.Window.dropFileCount], event.drop.file);
|
strcpy(CORE.Window.dropFilepaths[CORE.Window.dropFileCount], event.drop.file);
|
||||||
|
|
@ -1460,7 +1464,7 @@ void PollInputEvents(void)
|
||||||
case SDL_WINDOWEVENT_FOCUS_GAINED:
|
case SDL_WINDOWEVENT_FOCUS_GAINED:
|
||||||
case SDL_WINDOWEVENT_MAXIMIZED:
|
case SDL_WINDOWEVENT_MAXIMIZED:
|
||||||
case SDL_WINDOWEVENT_RESTORED:
|
case SDL_WINDOWEVENT_RESTORED:
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3
|
#if defined(PLATFORM_DESKTOP_SDL3)
|
||||||
break;
|
break;
|
||||||
#else
|
#else
|
||||||
default: break;
|
default: break;
|
||||||
|
|
@ -1471,7 +1475,7 @@ void PollInputEvents(void)
|
||||||
// Keyboard events
|
// Keyboard events
|
||||||
case SDL_KEYDOWN:
|
case SDL_KEYDOWN:
|
||||||
{
|
{
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3
|
#if defined(PLATFORM_DESKTOP_SDL3)
|
||||||
// SDL3 Migration: The following structures have been removed: * SDL_Keysym
|
// SDL3 Migration: The following structures have been removed: * SDL_Keysym
|
||||||
KeyboardKey key = ConvertScancodeToKey(event.key.scancode);
|
KeyboardKey key = ConvertScancodeToKey(event.key.scancode);
|
||||||
#else
|
#else
|
||||||
|
|
@ -1502,7 +1506,7 @@ void PollInputEvents(void)
|
||||||
case SDL_KEYUP:
|
case SDL_KEYUP:
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3
|
#if defined(PLATFORM_DESKTOP_SDL3)
|
||||||
KeyboardKey key = ConvertScancodeToKey(event.key.scancode);
|
KeyboardKey key = ConvertScancodeToKey(event.key.scancode);
|
||||||
#else
|
#else
|
||||||
KeyboardKey key = ConvertScancodeToKey(event.key.keysym.scancode);
|
KeyboardKey key = ConvertScancodeToKey(event.key.keysym.scancode);
|
||||||
|
|
@ -1858,7 +1862,7 @@ int InitPlatform(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init window
|
// Init window
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3
|
#if defined(PLATFORM_DESKTOP_SDL3)
|
||||||
platform.window = SDL_CreateWindow(CORE.Window.title, CORE.Window.screen.width, CORE.Window.screen.height, flags);
|
platform.window = SDL_CreateWindow(CORE.Window.title, CORE.Window.screen.width, CORE.Window.screen.height, flags);
|
||||||
#else
|
#else
|
||||||
platform.window = SDL_CreateWindow(CORE.Window.title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, CORE.Window.screen.width, CORE.Window.screen.height, flags);
|
platform.window = SDL_CreateWindow(CORE.Window.title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, CORE.Window.screen.width, CORE.Window.screen.height, flags);
|
||||||
|
|
@ -1946,11 +1950,10 @@ int InitPlatform(void)
|
||||||
CORE.Storage.basePath = SDL_GetBasePath(); // Alternative: GetWorkingDirectory();
|
CORE.Storage.basePath = SDL_GetBasePath(); // Alternative: GetWorkingDirectory();
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#if defined(PLATFORM_DESKTOP_SDL3)
|
||||||
#ifdef PLATFORM_DESKTOP_SDL3
|
|
||||||
TRACELOG(LOG_INFO, "PLATFORM: DESKTOP (SDL3): Initialized successfully");
|
TRACELOG(LOG_INFO, "PLATFORM: DESKTOP (SDL3): Initialized successfully");
|
||||||
#else
|
#else
|
||||||
TRACELOG(LOG_INFO, "PLATFORM: DESKTOP (SDL): Initialized successfully");
|
TRACELOG(LOG_INFO, "PLATFORM: DESKTOP (SDL2): Initialized successfully");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
|
|
@ -509,6 +509,16 @@ const char *GetClipboardText(void)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get clipboard image
|
||||||
|
Image GetClipboardImage(void)
|
||||||
|
{
|
||||||
|
Image image = { 0 };
|
||||||
|
|
||||||
|
TRACELOG(LOG_WARNING, "GetClipboardImage() not implemented on target platform");
|
||||||
|
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
// Show mouse cursor
|
// Show mouse cursor
|
||||||
void ShowCursor(void)
|
void ShowCursor(void)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -292,6 +292,16 @@ const char *GetClipboardText(void)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get clipboard image
|
||||||
|
Image GetClipboardImage(void)
|
||||||
|
{
|
||||||
|
Image image = { 0 };
|
||||||
|
|
||||||
|
TRACELOG(LOG_WARNING, "GetClipboardImage() not implemented on target platform");
|
||||||
|
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
// Show mouse cursor
|
// Show mouse cursor
|
||||||
void ShowCursor(void)
|
void ShowCursor(void)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -771,8 +771,11 @@ Vector2 GetWindowPosition(void)
|
||||||
// Get window scale DPI factor for current monitor
|
// Get window scale DPI factor for current monitor
|
||||||
Vector2 GetWindowScaleDPI(void)
|
Vector2 GetWindowScaleDPI(void)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "GetWindowScaleDPI() not implemented on target platform");
|
// NOTE: Returned scale is relative to the current monitor where the browser window is located
|
||||||
return (Vector2){ 1.0f, 1.0f };
|
Vector2 scale = { 1.0f, 1.0f };
|
||||||
|
scale.x = (float)EM_ASM_DOUBLE( { return window.devicePixelRatio; } );
|
||||||
|
scale.y = scale.x;
|
||||||
|
return scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set clipboard text content
|
// Set clipboard text content
|
||||||
|
|
@ -805,6 +808,16 @@ const char *GetClipboardText(void)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get clipboard image
|
||||||
|
Image GetClipboardImage(void)
|
||||||
|
{
|
||||||
|
Image image = { 0 };
|
||||||
|
|
||||||
|
TRACELOG(LOG_WARNING, "GetClipboardImage() not implemented on target platform");
|
||||||
|
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
// Show mouse cursor
|
// Show mouse cursor
|
||||||
void ShowCursor(void)
|
void ShowCursor(void)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1855,6 +1855,8 @@ void SeekMusicStream(Music music, float position)
|
||||||
|
|
||||||
ma_mutex_lock(&AUDIO.System.lock);
|
ma_mutex_lock(&AUDIO.System.lock);
|
||||||
music.stream.buffer->framesProcessed = positionInFrames;
|
music.stream.buffer->framesProcessed = positionInFrames;
|
||||||
|
music.stream.buffer->isSubBufferProcessed[0] = true;
|
||||||
|
music.stream.buffer->isSubBufferProcessed[1] = true;
|
||||||
ma_mutex_unlock(&AUDIO.System.lock);
|
ma_mutex_unlock(&AUDIO.System.lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
/**********************************************************************************************
|
/**********************************************************************************************
|
||||||
*
|
*
|
||||||
* raylib v5.5 - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com)
|
* raylib v5.6-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
|
||||||
|
|
@ -88,9 +88,9 @@
|
||||||
#include <stdarg.h> // Required for: va_list - Only used by TraceLogCallback
|
#include <stdarg.h> // Required for: va_list - Only used by TraceLogCallback
|
||||||
|
|
||||||
#define RAYLIB_VERSION_MAJOR 5
|
#define RAYLIB_VERSION_MAJOR 5
|
||||||
#define RAYLIB_VERSION_MINOR 5
|
#define RAYLIB_VERSION_MINOR 6
|
||||||
#define RAYLIB_VERSION_PATCH 0
|
#define RAYLIB_VERSION_PATCH 0
|
||||||
#define RAYLIB_VERSION "5.5"
|
#define RAYLIB_VERSION "5.6-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
|
||||||
|
|
|
||||||
|
|
@ -304,6 +304,14 @@ RMAPI float Vector2DotProduct(Vector2 v1, Vector2 v2)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Calculate two vectors cross product
|
||||||
|
RMAPI float Vector2CrossProduct(Vector2 v1, Vector2 v2)
|
||||||
|
{
|
||||||
|
float result = (v1.x*v2.y - v1.y*v2.x);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
// Calculate distance between two vectors
|
// Calculate distance between two vectors
|
||||||
RMAPI float Vector2Distance(Vector2 v1, Vector2 v2)
|
RMAPI float Vector2Distance(Vector2 v1, Vector2 v2)
|
||||||
{
|
{
|
||||||
|
|
@ -2648,7 +2656,7 @@ inline Vector2 operator * (const Vector2& lhs, const Matrix& rhs)
|
||||||
return Vector2Transform(lhs, rhs);
|
return Vector2Transform(lhs, rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const Vector2& operator -= (Vector2& lhs, const Matrix& rhs)
|
inline const Vector2& operator *= (Vector2& lhs, const Matrix& rhs)
|
||||||
{
|
{
|
||||||
lhs = Vector2Transform(lhs, rhs);
|
lhs = Vector2Transform(lhs, rhs);
|
||||||
return lhs;
|
return lhs;
|
||||||
|
|
@ -2661,7 +2669,7 @@ inline Vector2 operator / (const Vector2& lhs, const float& rhs)
|
||||||
|
|
||||||
inline const Vector2& operator /= (Vector2& lhs, const float& rhs)
|
inline const Vector2& operator /= (Vector2& lhs, const float& rhs)
|
||||||
{
|
{
|
||||||
lhs = Vector2Scale(lhs, rhs);
|
lhs = Vector2Scale(lhs, 1.0f / rhs);
|
||||||
return lhs;
|
return lhs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2742,7 +2750,7 @@ inline Vector3 operator * (const Vector3& lhs, const Matrix& rhs)
|
||||||
return Vector3Transform(lhs, rhs);
|
return Vector3Transform(lhs, rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const Vector3& operator -= (Vector3& lhs, const Matrix& rhs)
|
inline const Vector3& operator *= (Vector3& lhs, const Matrix& rhs)
|
||||||
{
|
{
|
||||||
lhs = Vector3Transform(lhs, rhs);
|
lhs = Vector3Transform(lhs, rhs);
|
||||||
return lhs;
|
return lhs;
|
||||||
|
|
@ -2755,7 +2763,7 @@ inline Vector3 operator / (const Vector3& lhs, const float& rhs)
|
||||||
|
|
||||||
inline const Vector3& operator /= (Vector3& lhs, const float& rhs)
|
inline const Vector3& operator /= (Vector3& lhs, const float& rhs)
|
||||||
{
|
{
|
||||||
lhs = Vector3Scale(lhs, rhs);
|
lhs = Vector3Scale(lhs, 1.0f / rhs);
|
||||||
return lhs;
|
return lhs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2839,7 +2847,7 @@ inline Vector4 operator / (const Vector4& lhs, const float& rhs)
|
||||||
|
|
||||||
inline const Vector4& operator /= (Vector4& lhs, const float& rhs)
|
inline const Vector4& operator /= (Vector4& lhs, const float& rhs)
|
||||||
{
|
{
|
||||||
lhs = Vector4Scale(lhs, rhs);
|
lhs = Vector4Scale(lhs, 1.0f / rhs);
|
||||||
return lhs;
|
return lhs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
* rlgl v5.0 - A multi-OpenGL abstraction layer with an immediate-mode style API
|
* rlgl v5.0 - A multi-OpenGL abstraction layer with an immediate-mode style API
|
||||||
*
|
*
|
||||||
* DESCRIPTION:
|
* DESCRIPTION:
|
||||||
* An abstraction layer for multiple OpenGL versions (1.1, 2.1, 3.3 Core, 4.3 Core, ES 2.0)
|
* An abstraction layer for multiple OpenGL versions (1.1, 2.1, 3.3 Core, 4.3 Core, ES 2.0, ES 3.0)
|
||||||
* that provides a pseudo-OpenGL 1.1 immediate-mode style API (rlVertex, rlTranslate, rlRotate...)
|
* that provides a pseudo-OpenGL 1.1 immediate-mode style API (rlVertex, rlTranslate, rlRotate...)
|
||||||
*
|
*
|
||||||
* ADDITIONAL NOTES:
|
* ADDITIONAL NOTES:
|
||||||
|
|
|
||||||
|
|
@ -1943,13 +1943,14 @@ bool ExportMesh(Mesh mesh, const char *fileName)
|
||||||
if (IsFileExtension(fileName, ".obj"))
|
if (IsFileExtension(fileName, ".obj"))
|
||||||
{
|
{
|
||||||
// Estimated data size, it should be enough...
|
// Estimated data size, it should be enough...
|
||||||
int dataSize = mesh.vertexCount*(int)strlen("v 0000.00f 0000.00f 0000.00f") +
|
int vc = mesh.vertexCount;
|
||||||
mesh.vertexCount*(int)strlen("vt 0.000f 0.00f") +
|
int dataSize = vc*(int)strlen("v -0000.000000f -0000.000000f -0000.000000f\n") +
|
||||||
mesh.vertexCount*(int)strlen("vn 0.000f 0.00f 0.00f") +
|
vc*(int)strlen("vt -0.000000f -0.000000f\n") +
|
||||||
mesh.triangleCount*(int)strlen("f 00000/00000/00000 00000/00000/00000 00000/00000/00000");
|
vc*(int)strlen("vn -0.0000f -0.0000f -0.0000f\n") +
|
||||||
|
mesh.triangleCount*snprintf(NULL, 0, "f %i/%i/%i %i/%i/%i %i/%i/%i\n", vc, vc, vc, vc, vc, vc, vc, vc, vc);
|
||||||
|
|
||||||
// NOTE: Text data buffer size is estimated considering mesh data size
|
// NOTE: Text data buffer size is estimated considering mesh data size
|
||||||
char *txtData = (char *)RL_CALLOC(dataSize*2 + 2000, sizeof(char));
|
char *txtData = (char *)RL_CALLOC(dataSize + 1000, sizeof(char));
|
||||||
|
|
||||||
int byteCount = 0;
|
int byteCount = 0;
|
||||||
byteCount += sprintf(txtData + byteCount, "# //////////////////////////////////////////////////////////////////////////////////\n");
|
byteCount += sprintf(txtData + byteCount, "# //////////////////////////////////////////////////////////////////////////////////\n");
|
||||||
|
|
@ -1969,17 +1970,17 @@ bool ExportMesh(Mesh mesh, const char *fileName)
|
||||||
|
|
||||||
for (int i = 0, v = 0; i < mesh.vertexCount; i++, v += 3)
|
for (int i = 0, v = 0; i < mesh.vertexCount; i++, v += 3)
|
||||||
{
|
{
|
||||||
byteCount += sprintf(txtData + byteCount, "v %.2f %.2f %.2f\n", mesh.vertices[v], mesh.vertices[v + 1], mesh.vertices[v + 2]);
|
byteCount += sprintf(txtData + byteCount, "v %.6f %.6f %.6f\n", mesh.vertices[v], mesh.vertices[v + 1], mesh.vertices[v + 2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0, v = 0; i < mesh.vertexCount; i++, v += 2)
|
for (int i = 0, v = 0; i < mesh.vertexCount; i++, v += 2)
|
||||||
{
|
{
|
||||||
byteCount += sprintf(txtData + byteCount, "vt %.3f %.3f\n", mesh.texcoords[v], mesh.texcoords[v + 1]);
|
byteCount += sprintf(txtData + byteCount, "vt %.6f %.6f\n", mesh.texcoords[v], mesh.texcoords[v + 1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0, v = 0; i < mesh.vertexCount; i++, v += 3)
|
for (int i = 0, v = 0; i < mesh.vertexCount; i++, v += 3)
|
||||||
{
|
{
|
||||||
byteCount += sprintf(txtData + byteCount, "vn %.3f %.3f %.3f\n", mesh.normals[v], mesh.normals[v + 1], mesh.normals[v + 2]);
|
byteCount += sprintf(txtData + byteCount, "vn %.4f %.4f %.4f\n", mesh.normals[v], mesh.normals[v + 1], mesh.normals[v + 2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mesh.indices != NULL)
|
if (mesh.indices != NULL)
|
||||||
|
|
@ -2000,8 +2001,6 @@ bool ExportMesh(Mesh mesh, const char *fileName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
byteCount += sprintf(txtData + byteCount, "\n");
|
|
||||||
|
|
||||||
// NOTE: Text data length exported is determined by '\0' (NULL) character
|
// NOTE: Text data length exported is determined by '\0' (NULL) character
|
||||||
success = SaveFileText(fileName, txtData);
|
success = SaveFileText(fileName, txtData);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1339,6 +1339,7 @@ Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing
|
||||||
int GetGlyphIndex(Font font, int codepoint)
|
int GetGlyphIndex(Font font, int codepoint)
|
||||||
{
|
{
|
||||||
int index = 0;
|
int index = 0;
|
||||||
|
if (!IsFontValid(font)) return index;
|
||||||
|
|
||||||
#define SUPPORT_UNORDERED_CHARSET
|
#define SUPPORT_UNORDERED_CHARSET
|
||||||
#if defined(SUPPORT_UNORDERED_CHARSET)
|
#if defined(SUPPORT_UNORDERED_CHARSET)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user