From 4cfae99a746b60d5747a0e20a16c84a5c4b0d2f6 Mon Sep 17 00:00:00 2001 From: Jopestpe <47086979+Jopestpe@users.noreply.github.com> Date: Tue, 7 Oct 2025 15:25:22 -0300 Subject: [PATCH 1/5] [examples] Added `shapes_triangle_strip` (#5240) * [examples] Add shapes_triangle_strip * Remove functions --- examples/Makefile | 1 + examples/Makefile.Web | 4 + examples/README.md | 5 +- examples/examples_list.txt | 1 + examples/shapes/shapes_triangle_strip.c | 106 ++++++++++++++++++++++ examples/shapes/shapes_triangle_strip.png | Bin 0 -> 12694 bytes 6 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 examples/shapes/shapes_triangle_strip.c create mode 100644 examples/shapes/shapes_triangle_strip.png diff --git a/examples/Makefile b/examples/Makefile index a36b9e447..d5fb730ec 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -564,6 +564,7 @@ SHAPES = \ shapes/shapes_rounded_rectangle_drawing \ shapes/shapes_splines_drawing \ shapes/shapes_top_down_lights \ + shapes/shapes_triangle_strip \ shapes/shapes_vector_angle TEXTURES = \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 2d3018abf..c053528b6 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -564,6 +564,7 @@ SHAPES = \ shapes/shapes_rounded_rectangle_drawing \ shapes/shapes_splines_drawing \ shapes/shapes_top_down_lights \ + shapes/shapes_triangle_strip \ shapes/shapes_vector_angle TEXTURES = \ @@ -884,6 +885,9 @@ shapes/shapes_splines_drawing: shapes/shapes_splines_drawing.c shapes/shapes_top_down_lights: shapes/shapes_top_down_lights.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +shapes/shapes_triangle_strip: shapes/shapes_triangle_strip.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + shapes/shapes_vector_angle: shapes/shapes_vector_angle.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) diff --git a/examples/README.md b/examples/README.md index d852e7105..9f6784e65 100644 --- a/examples/README.md +++ b/examples/README.md @@ -17,7 +17,7 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 173] +## EXAMPLES COLLECTION [TOTAL: 174] ### category: core [40] @@ -66,7 +66,7 @@ Examples using raylib[core](../src/rcore.c) platform functionality like window c | [core_undo_redo](core/core_undo_redo.c) | core_undo_redo | ⭐⭐⭐☆ | 5.5 | 5.6 | [Ramon Santamaria](https://github.com/raysan5) | | [core_input_actions](core/core_input_actions.c) | core_input_actions | ⭐⭐☆☆ | 5.5 | 5.6 | [Jett](https://github.com/JettMonstersGoBoom) | -### category: shapes [24] +### category: shapes [25] Examples using raylib shapes drawing functionality, provided by raylib [shapes](../src/rshapes.c) module. @@ -95,6 +95,7 @@ Examples using raylib shapes drawing functionality, provided by raylib [shapes]( | [shapes_digital_clock](shapes/shapes_digital_clock.c) | shapes_digital_clock | ⭐⭐⭐⭐️ | 5.5 | 5.6 | [Hamza RAHAL](https://github.com/hmz-rhl) | | [shapes_double_pendulum](shapes/shapes_double_pendulum.c) | shapes_double_pendulum | ⭐⭐☆☆ | 5.5 | 5.5 | [JoeCheong](https://github.com/Joecheong2006) | | [shapes_dashed_line](shapes/shapes_dashed_line.c) | shapes_dashed_line | ⭐☆☆☆ | 5.5 | 5.5 | [Luís Almeida](https://github.com/luis605) | +| [shapes_triangle_strip](shapes/shapes_triangle_strip.c) | shapes_triangle_strip | ⭐⭐☆☆ | 5.6-dev | 5.6-dev | [Jopestpe](https://github.com/jopestpe) | | [shapes_vector_angle](shapes/shapes_vector_angle.c) | shapes_vector_angle | ⭐⭐☆☆ | 1.0 | 5.0 | [Ramon Santamaria](https://github.com/raysan5) | ### category: textures [26] diff --git a/examples/examples_list.txt b/examples/examples_list.txt index 5a0c679a4..879f5707b 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -70,6 +70,7 @@ shapes;shapes_splines_drawing;★★★☆;5.0;5.0;2023;2025;"Ramon Santamaria"; shapes;shapes_digital_clock;★★★★;5.5;5.6;2025;2025;"Hamza RAHAL";@hmz-rhl shapes;shapes_double_pendulum;★★☆☆;5.5;5.5;2025;2025;"JoeCheong";@Joecheong2006 shapes;shapes_dashed_line;★☆☆☆;5.5;5.5;2025;2025;"Luís Almeida";@luis605 +shapes;shapes_triangle_strip;★★☆☆;5.6-dev;5.6-dev;2025;2025;"Jopestpe";@jopestpe shapes;shapes_vector_angle;★★☆☆;1.0;5.0;2023;2025;"Ramon Santamaria";@raysan5 textures;textures_logo_raylib;★☆☆☆;1.0;1.0;2014;2025;"Ramon Santamaria";@raysan5 textures;textures_srcrec_dstrec;★★★☆;1.3;1.3;2015;2025;"Ramon Santamaria";@raysan5 diff --git a/examples/shapes/shapes_triangle_strip.c b/examples/shapes/shapes_triangle_strip.c new file mode 100644 index 000000000..ee4556d25 --- /dev/null +++ b/examples/shapes/shapes_triangle_strip.c @@ -0,0 +1,106 @@ +/******************************************************************************************* +* +* raylib [shapes] example - triangle strip +* +* Example complexity rating: [★★☆☆] 2/4 +* +* Example originally created with raylib 5.6-dev, last time updated with raylib 5.6-dev +* +* Example contributed by Jopestpe (@jopestpe) +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* Copyright (c) 2018-2025 Jopestpe (@jopestpe) +* +********************************************************************************************/ + +#include "raylib.h" +#include + +#define RAYGUI_IMPLEMENTATION +#include "raygui.h" // Required for GUI controls + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - triangle strip"); + + Vector2 points[120] = { 0 }; + Vector2 center = { (screenWidth/2.0f) - 125.f, screenHeight/2.0f }; + float segments = 6.0f; + float insideRadius = 100.0f; + float outsideRadius = 150.0f; + bool outline = true; + + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + int pointCount = (int)(segments); + float angleStep = (360.0f/pointCount)*DEG2RAD; + + for (int i = 0, i2 = 0; i < pointCount; i++, i2 += 2) + { + float angle1 = i*angleStep; + points[i2] = (Vector2){ center.x + cosf(angle1)*insideRadius, center.y + sinf(angle1)*insideRadius }; + float angle2 = angle1 + angleStep/2.0f; + points[i2 + 1] = (Vector2){ center.x + cosf(angle2)*outsideRadius, center.y + sinf(angle2)*outsideRadius }; + } + + points[pointCount*2] = points[0]; + points[pointCount*2 + 1] = points[1]; + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + for (int i = 0, i2 = 0; i < pointCount; i++, i2 += 2) + { + float angle1 = i*angleStep; + Color color = ColorFromHSV(angle1*RAD2DEG, 1.0f, 1.0f); + DrawTriangle(points[i2 + 2], points[i2 + 1], points[i2], color); + if (outline) DrawTriangleLines(points[i2], points[i2 + 1], points[i2 + 2], BLACK); + + float angle2 = angle1 + angleStep/2.0f; + color = ColorFromHSV(angle2*RAD2DEG, 1.0f, 1.0f); + DrawTriangle(points[i2 + 3], points[i2 + 1], points[i2 + 2], color); + if (outline) DrawTriangleLines(points[i2 + 2], points[i2 + 1], points[i2 + 3], BLACK); + } + + DrawLine(580, 0, 580, GetScreenHeight(), (Color){ 218, 218, 218, 255 }); + DrawRectangle(580, 0, GetScreenWidth(), GetScreenHeight(), (Color){ 232, 232, 232, 255 }); + + // Draw GUI controls + //------------------------------------------------------------------------------ + GuiSliderBar((Rectangle){ 640, 40, 120, 20}, "Segments", TextFormat("%.0f", segments), &segments, 6.0f, 60.f); + GuiCheckBox((Rectangle){ 640, 70, 20, 20 }, "Outline", &outline); + //------------------------------------------------------------------------------ + + DrawFPS(10, 10); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} \ No newline at end of file diff --git a/examples/shapes/shapes_triangle_strip.png b/examples/shapes/shapes_triangle_strip.png new file mode 100644 index 0000000000000000000000000000000000000000..c291a084918ee0a2ae7c9f3ae267cb5716f9f167 GIT binary patch literal 12694 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 literal 0 HcmV?d00001 From 9bf7699624fa0e761e0b82aa9dee3b268304e263 Mon Sep 17 00:00:00 2001 From: Hugo Date: Wed, 8 Oct 2025 00:10:43 +0200 Subject: [PATCH 2/5] [examples] Added `shapes_kaleidoscope` (#5233) * ADDED: example: `shapes_kaleidoscope` * Add line reflection * Updated with `rexm update` * Follow raylib's conventions --- examples/Makefile | 1 + examples/Makefile.Web | 4 + examples/README.md | 7 +- examples/examples_list.txt | 1 + examples/shapes/shapes_kaleidoscope.c | 92 +++ examples/shapes/shapes_kaleidoscope.png | Bin 0 -> 39307 bytes .../examples/shapes_kaleidoscope.vcxproj | 569 ++++++++++++++++++ projects/VS2022/raylib.sln | 99 ++- tools/rexm/examples_report.md | 3 + 9 files changed, 764 insertions(+), 12 deletions(-) create mode 100644 examples/shapes/shapes_kaleidoscope.c create mode 100644 examples/shapes/shapes_kaleidoscope.png create mode 100644 projects/VS2022/examples/shapes_kaleidoscope.vcxproj diff --git a/examples/Makefile b/examples/Makefile index d5fb730ec..6e2853edb 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -554,6 +554,7 @@ SHAPES = \ shapes/shapes_easings_box \ shapes/shapes_easings_rectangles \ shapes/shapes_following_eyes \ + shapes/shapes_kaleidoscope \ shapes/shapes_lines_bezier \ shapes/shapes_logo_raylib \ shapes/shapes_logo_raylib_anim \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index c053528b6..f1662a301 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -554,6 +554,7 @@ SHAPES = \ shapes/shapes_easings_box \ shapes/shapes_easings_rectangles \ shapes/shapes_following_eyes \ + shapes/shapes_kaleidoscope \ shapes/shapes_lines_bezier \ shapes/shapes_logo_raylib \ shapes/shapes_logo_raylib_anim \ @@ -855,6 +856,9 @@ shapes/shapes_easings_rectangles: shapes/shapes_easings_rectangles.c shapes/shapes_following_eyes: shapes/shapes_following_eyes.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +shapes/shapes_kaleidoscope: shapes/shapes_kaleidoscope.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + shapes/shapes_lines_bezier: shapes/shapes_lines_bezier.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) diff --git a/examples/README.md b/examples/README.md index 9f6784e65..441c5a368 100644 --- a/examples/README.md +++ b/examples/README.md @@ -17,7 +17,7 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 174] +## EXAMPLES COLLECTION [TOTAL: 175] ### category: core [40] @@ -66,7 +66,7 @@ Examples using raylib[core](../src/rcore.c) platform functionality like window c | [core_undo_redo](core/core_undo_redo.c) | core_undo_redo | ⭐⭐⭐☆ | 5.5 | 5.6 | [Ramon Santamaria](https://github.com/raysan5) | | [core_input_actions](core/core_input_actions.c) | core_input_actions | ⭐⭐☆☆ | 5.5 | 5.6 | [Jett](https://github.com/JettMonstersGoBoom) | -### category: shapes [25] +### category: shapes [26] Examples using raylib shapes drawing functionality, provided by raylib [shapes](../src/rshapes.c) module. @@ -84,8 +84,8 @@ Examples using raylib shapes drawing functionality, provided by raylib [shapes]( | [shapes_following_eyes](shapes/shapes_following_eyes.c) | shapes_following_eyes | ⭐⭐☆☆ | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | | [shapes_easings_ball](shapes/shapes_easings_ball.c) | shapes_easings_ball | ⭐⭐☆☆ | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | | [shapes_easings_box](shapes/shapes_easings_box.c) | shapes_easings_box | ⭐⭐☆☆ | 2.5 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | -| [shapes_recursive_tree](shapes/shapes_recursive_tree.c) | shapes_recursive_tree | ⭐⭐⭐☆ | 5.6-dev | 5.6-dev| [Jopestpe](https://github.com/jopestpe) | | [shapes_easings_rectangles](shapes/shapes_easings_rectangles.c) | shapes_easings_rectangles | ⭐⭐⭐☆ | 2.0 | 2.5 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_recursive_tree](shapes/shapes_recursive_tree.c) | shapes_recursive_tree | ⭐⭐⭐☆ | 5.6-dev | 5.6-dev | [Jopestpe](https://github.com/jopestpe) | | [shapes_ring_drawing](shapes/shapes_ring_drawing.c) | shapes_ring_drawing | ⭐⭐⭐☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | | [shapes_circle_sector_drawing](shapes/shapes_circle_sector_drawing.c) | shapes_circle_sector_drawing | ⭐⭐⭐☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | | [shapes_rounded_rectangle_drawing](shapes/shapes_rounded_rectangle_drawing.c) | shapes_rounded_rectangle_drawing | ⭐⭐⭐☆ | 2.5 | 2.5 | [Vlad Adrian](https://github.com/demizdor) | @@ -97,6 +97,7 @@ Examples using raylib shapes drawing functionality, provided by raylib [shapes]( | [shapes_dashed_line](shapes/shapes_dashed_line.c) | shapes_dashed_line | ⭐☆☆☆ | 5.5 | 5.5 | [Luís Almeida](https://github.com/luis605) | | [shapes_triangle_strip](shapes/shapes_triangle_strip.c) | shapes_triangle_strip | ⭐⭐☆☆ | 5.6-dev | 5.6-dev | [Jopestpe](https://github.com/jopestpe) | | [shapes_vector_angle](shapes/shapes_vector_angle.c) | shapes_vector_angle | ⭐⭐☆☆ | 1.0 | 5.0 | [Ramon Santamaria](https://github.com/raysan5) | +| [shapes_kaleidoscope](shapes/shapes_kaleidoscope.c) | shapes_kaleidoscope | ⭐⭐☆☆ | 5.5 | 5.6 | [Hugo ARNAL](https://github.com/hugoarnal) | ### category: textures [26] diff --git a/examples/examples_list.txt b/examples/examples_list.txt index 879f5707b..c6f2a97b3 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -181,3 +181,4 @@ others;easings_testbed;★★★☆;2.5;3.0;2019;2025;"Juan Miguel López";@flas others;raylib_opengl_interop;★★★★;3.8;4.0;2021;2025;"Stephan Soller";@arkanis others;embedded_files_loading;★★☆☆;3.0;3.5;2020;2025;"Kristian Holmgren";@defutura others;web_basic_window;★☆☆☆;5.6-dev;5.6-dev;2014;2025;"Ramon Santamaria";@raysan5 +shapes;shapes_kaleidoscope;★★☆☆;5.5;5.6;2025;2025;"Hugo ARNAL";@hugoarnal diff --git a/examples/shapes/shapes_kaleidoscope.c b/examples/shapes/shapes_kaleidoscope.c new file mode 100644 index 000000000..07c96344c --- /dev/null +++ b/examples/shapes/shapes_kaleidoscope.c @@ -0,0 +1,92 @@ +/******************************************************************************************* +* +* raylib [shapes] example - kaleidoscope +* +* Example complexity rating: [★★☆☆] 2/4 +* +* Example originally created with raylib 5.5, last time updated with raylib 5.6 +* +* Example contributed by Hugo ARNAL (@hugoarnal) and reviewed by Ramon Santamaria (@raysan5) +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* Copyright (c) 2025 Hugo ARNAL (@hugoarnal) +* +********************************************************************************************/ + +#include "raylib.h" +#include "raymath.h" + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - kaleidoscope"); + + int symmetry = 6; + float angle = 360.0f/(float)symmetry; + float thickness = 3.0f; + Vector2 prevMousePos = { 0 }; + + SetTargetFPS(60); + ClearBackground(BLACK); + + Vector2 offset = { (float)screenWidth/2.0f, (float)screenHeight/2.0f }; + Camera2D camera = { 0 }; + camera.target = (Vector2){ 0 }; + camera.offset = offset; + camera.rotation = 0.0f; + camera.zoom = 1.0f; + + Vector2 scaleVector = { 1.0f, -1.0f }; + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + Vector2 mousePos = GetMousePosition(); + Vector2 lineStart = Vector2Subtract(mousePos, offset); + Vector2 lineEnd = Vector2Subtract(prevMousePos, offset); + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + BeginMode2D(camera); + if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) { + for (int i = 0; i < symmetry; i++) { + lineStart = Vector2Rotate(lineStart, angle*DEG2RAD); + lineEnd = Vector2Rotate(lineEnd, angle*DEG2RAD); + + DrawLineEx(lineStart, lineEnd, thickness, WHITE); + + Vector2 reflectLineStart = Vector2Multiply(lineStart, scaleVector); + Vector2 reflectLineEnd = Vector2Multiply(lineEnd, scaleVector); + + DrawLineEx(reflectLineStart, reflectLineEnd, thickness, WHITE); + } + } + + prevMousePos = mousePos; + EndMode2D(); + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} diff --git a/examples/shapes/shapes_kaleidoscope.png b/examples/shapes/shapes_kaleidoscope.png new file mode 100644 index 0000000000000000000000000000000000000000..d14571ab735c1d50b3dac244566dd5a8c04e4137 GIT binary patch literal 39307 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 My85}Sb4q9e03ZC`M*si- literal 0 HcmV?d00001 diff --git a/projects/VS2022/examples/shapes_kaleidoscope.vcxproj b/projects/VS2022/examples/shapes_kaleidoscope.vcxproj new file mode 100644 index 000000000..1fe3e7a70 --- /dev/null +++ b/projects/VS2022/examples/shapes_kaleidoscope.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {6B1A933E-71B8-4C1F-9E79-02D98830E671} + Win32Proj + shapes_kaleidoscope + 10.0 + shapes_kaleidoscope + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + 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) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + 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) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + 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) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + 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) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + 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) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + 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) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + 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) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + 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) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + 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) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + 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) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + 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) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + 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) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 0d7019b61..0c710a731 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -365,6 +365,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_monitor_change", "exam EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "web_basic_window", "examples\web_basic_window.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_kaleidoscope", "examples\shapes_kaleidoscope.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_recursive_tree", "examples\shapes_recursive_tree.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_triangle_strip", "examples\shapes_triangle_strip.vcxproj", "{2CCCD9E4-9058-4291-BD89-39C979F0CA1E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -4507,10 +4513,82 @@ Global {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|ARM64.Build.0 = Debug|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x64.ActiveCfg = Debug|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x64.Build.0 = Debug|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x86.ActiveCfg = Debug|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x86.Build.0 = Debug|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|ARM64.ActiveCfg = Release|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|ARM64.Build.0 = Release|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x64.ActiveCfg = Release|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x64.Build.0 = Release|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x86.ActiveCfg = Release|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection GlobalSection(NestedProjects) = preSolution {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} {278D8859-20B1-428F-8448-064F46E1F021} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} @@ -4690,8 +4768,11 @@ Global {2CCCD9E4-9058-4291-BD89-39C979F0CA1E} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {9DB1F875-6E65-4195-B23F-ED8095C0B99C} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} - EndGlobalSection -EndGlobal + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {278D8859-20B1-428F-8448-064F46E1F021} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {278D8859-20B1-428F-8448-064F46E1F021} + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E} = {278D8859-20B1-428F-8448-064F46E1F021} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} + EndGlobalSection +EndGlobal diff --git a/tools/rexm/examples_report.md b/tools/rexm/examples_report.md index bf2dbde8b..60da00dd5 100644 --- a/tools/rexm/examples_report.md +++ b/tools/rexm/examples_report.md @@ -73,6 +73,7 @@ Example elements validated: | shapes_easings_ball | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_easings_box | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_easings_rectangles | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_recursive_tree | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_ring_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_circle_sector_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_rounded_rectangle_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -82,7 +83,9 @@ Example elements validated: | shapes_digital_clock | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_double_pendulum | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_dashed_line | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_triangle_strip | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_vector_angle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_kaleidoscope | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_logo_raylib | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_srcrec_dstrec | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_image_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | From 6f584464b6c2314eb5cddce267c49a5414829ab0 Mon Sep 17 00:00:00 2001 From: JohnnyCena123 Date: Wed, 8 Oct 2025 16:04:29 +0300 Subject: [PATCH 3/5] remove duplicate entry from `keyMappingRGFW` (#5242) --- src/platforms/rcore_desktop_rgfw.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/platforms/rcore_desktop_rgfw.c b/src/platforms/rcore_desktop_rgfw.c index f2e2a7407..8c4deeb9a 100644 --- a/src/platforms/rcore_desktop_rgfw.c +++ b/src/platforms/rcore_desktop_rgfw.c @@ -135,7 +135,6 @@ static bool RGFW_disableCursor = false; static const unsigned short keyMappingRGFW[] = { [RGFW_keyNULL] = KEY_NULL, [RGFW_return] = KEY_ENTER, - [RGFW_return] = KEY_ENTER, [RGFW_apostrophe] = KEY_APOSTROPHE, [RGFW_comma] = KEY_COMMA, [RGFW_minus] = KEY_MINUS, From f62565dc726df092e8c136a924f3ecf9abf8b4d9 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 8 Oct 2025 18:16:46 +0200 Subject: [PATCH 4/5] Update text_unicode_ranges.c --- examples/text/text_unicode_ranges.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/text/text_unicode_ranges.c b/examples/text/text_unicode_ranges.c index 473bee64f..2ed25e72f 100644 --- a/examples/text/text_unicode_ranges.c +++ b/examples/text/text_unicode_ranges.c @@ -6,12 +6,12 @@ * * Example originally created with raylib 5.5, last time updated with raylib 5.6 * -* Example contributed by Vlad Adrian (@demizdor) and reviewed by Ramon Santamaria (@raysan5) +* Example contributed by Vadim Gunko (@GuvaCode) and reviewed by Ramon Santamaria (@raysan5) * * Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, * BSD-like license that allows static linking with closed source software * -* Copyright (c) 2025 Vlad Adrian (@demizdor) and Ramon Santamaria (@raysan5) +* Copyright (c) 2025 Vadim Gunko (@GuvaCode) and Ramon Santamaria (@raysan5) * ********************************************************************************************/ From 04a1a0293e886f396ac89118e3e14979123d727f Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 8 Oct 2025 18:17:32 +0200 Subject: [PATCH 5/5] Update examples_list.txt --- examples/examples_list.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/examples_list.txt b/examples/examples_list.txt index c6f2a97b3..81a61fb97 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -108,7 +108,7 @@ text;text_input_box;★★☆☆;1.7;3.5;2017;2025;"Ramon Santamaria";@raysan5 text;text_writing_anim;★★☆☆;1.4;1.4;2016;2025;"Ramon Santamaria";@raysan5 text;text_rectangle_bounds;★★★★;2.5;4.0;2018;2025;"Vlad Adrian";@demizdor text;text_unicode_emojis;★★★★;2.5;4.0;2019;2025;"Vlad Adrian";@demizdor -text;text_unicode_ranges;★★★★;5.5;5.6;2025;2025;"Vlad Adrian";@demizdor +text;text_unicode_ranges;★★★★;5.5;5.6;2025;2025;"Vadim Gunko";@GuvaCode text;text_3d_drawing;★★★★;3.5;4.0;2021;2025;"Vlad Adrian";@demizdor text;text_codepoints_loading;★★★☆;4.2;4.2;2022;2025;"Ramon Santamaria";@raysan5 text;text_inline_styling;★★★☆;5.6-dev;5.6-dev;2025;2025;"Wagner Barongello";@SultansOfCode