From 78661a4ee035d7958a86da27c9c1d942ae7d41da Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 29 Nov 2025 18:23:17 +0100 Subject: [PATCH] REXM: ADDED: `shapes_ball_physics` --- examples/Makefile | 1 + examples/Makefile.Web | 4 + examples/README.md | 5 +- examples/examples_list.txt | 1 + examples/shapes/shapes_ball_physics.c | 99 ++- examples/shapes/shapes_ball_physics.png | Bin 43216 -> 23245 bytes .../examples/shapes_ball_physics.vcxproj | 569 ++++++++++++++++++ projects/VS2022/raylib.sln | 27 + tools/rexm/reports/examples_validation.md | 1 + 9 files changed, 655 insertions(+), 52 deletions(-) create mode 100644 projects/VS2022/examples/shapes_ball_physics.vcxproj diff --git a/examples/Makefile b/examples/Makefile index 72df8571a..48cfba97a 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -560,6 +560,7 @@ CORE = \ core/core_world_screen SHAPES = \ + shapes/shapes_ball_physics \ shapes/shapes_basic_shapes \ shapes/shapes_bouncing_ball \ shapes/shapes_bullet_hell \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 431b2cad9..522b50fe0 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -548,6 +548,7 @@ CORE = \ core/core_world_screen SHAPES = \ + shapes/shapes_ball_physics \ shapes/shapes_basic_shapes \ shapes/shapes_bouncing_ball \ shapes/shapes_bullet_hell \ @@ -864,6 +865,9 @@ core/core_world_screen: core/core_world_screen.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) # Compile SHAPES examples +shapes/shapes_ball_physics: shapes/shapes_ball_physics.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + shapes/shapes_basic_shapes: shapes/shapes_basic_shapes.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) diff --git a/examples/README.md b/examples/README.md index 77b6ff37e..148caffe0 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: 200] +## EXAMPLES COLLECTION [TOTAL: 201] ### category: core [47] @@ -73,7 +73,7 @@ Examples using raylib [core](../src/rcore.c) module platform functionality: wind | [core_text_file_loading](core/core_text_file_loading.c) | core_text_file_loading | ⭐☆☆☆ | 5.5 | 5.6 | [Aanjishnu Bhattacharyya](https://github.com/NimComPoo-04) | | [core_compute_hash](core/core_compute_hash.c) | core_compute_hash | ⭐⭐☆☆ | 5.6-dev | 5.6-dev | [Ramon Santamaria](https://github.com/raysan5) | -### category: shapes [36] +### category: shapes [37] Examples using raylib shapes drawing functionality, provided by raylib [shapes](../src/rshapes.c) module. @@ -115,6 +115,7 @@ Examples using raylib shapes drawing functionality, provided by raylib [shapes]( | [shapes_math_angle_rotation](shapes/shapes_math_angle_rotation.c) | shapes_math_angle_rotation | ⭐☆☆☆ | 5.6-dev | 5.6 | [Kris](https://github.com/krispy-snacc) | | [shapes_rlgl_color_wheel](shapes/shapes_rlgl_color_wheel.c) | shapes_rlgl_color_wheel | ⭐⭐⭐☆ | 5.6-dev | 5.6-dev | [Robin](https://github.com/RobinsAviary) | | [shapes_rlgl_triangle](shapes/shapes_rlgl_triangle.c) | shapes_rlgl_triangle | ⭐⭐☆☆ | 5.6-dev | 5.6-dev | [Robin](https://github.com/RobinsAviary) | +| [shapes_ball_physics](shapes/shapes_ball_physics.c) | shapes_ball_physics | ⭐⭐☆☆ | 5.6-dev | 5.6-dev | [David Buzatto](https://github.com/davidbuzatto) | ### category: textures [28] diff --git a/examples/examples_list.txt b/examples/examples_list.txt index 605ddf263..2373fcc9b 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -90,6 +90,7 @@ shapes;shapes_lines_drawing;★☆☆☆;5.6-dev;5.6;2025;2025;"Robin";@RobinsAv shapes;shapes_math_angle_rotation;★☆☆☆;5.6-dev;5.6;2025;2025;"Kris";@krispy-snacc shapes;shapes_rlgl_color_wheel;★★★☆;5.6-dev;5.6-dev;2025;2025;"Robin";@RobinsAviary shapes;shapes_rlgl_triangle;★★☆☆;5.6-dev;5.6-dev;2025;2025;"Robin";@RobinsAviary +shapes;shapes_ball_physics;★★☆☆;5.6-dev;5.6-dev;2025;2025;"David Buzatto";@davidbuzatto 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 textures;textures_image_drawing;★★☆☆;1.4;1.4;2016;2025;"Ramon Santamaria";@raysan5 diff --git a/examples/shapes/shapes_ball_physics.c b/examples/shapes/shapes_ball_physics.c index 1c41d5f1a..8ba6a14e7 100644 --- a/examples/shapes/shapes_ball_physics.c +++ b/examples/shapes/shapes_ball_physics.c @@ -1,10 +1,10 @@ /******************************************************************************************* * -* raylib [shapes] example - physics bouncing balls +* raylib [shapes] example - ball physics * * Example complexity rating: [★★☆☆] 2/4 * -* Example originally created with raylib 5.5 +* Example originally created with raylib 5.6-dev, last time updated with raylib 5.6-dev * * Example contributed by David Buzatto (@davidbuzatto) and reviewed by Ramon Santamaria (@raysan5) * @@ -15,9 +15,10 @@ * ********************************************************************************************/ +#include "raylib.h" + #include #include -#include "raylib.h" #define MAX_BALLS 5000 // Maximum quantity of balls @@ -42,12 +43,12 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [shapes] example - physics bouncing balls"); + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - ball physics"); Ball balls[MAX_BALLS] = {{ - .pos = {GetScreenWidth()/2, GetScreenHeight()/2}, - .vel = {200, 200}, - .ppos = {0}, + .pos = { GetScreenWidth()/2, GetScreenHeight()/2 }, + .vel = { 200, 200 }, + .ppos = { 0 }, .radius = 40, .friction = 0.99, .elasticity = 0.9, @@ -55,7 +56,7 @@ int main(void) .grabbed = false }}; - int ballQuantity = 1; + int ballCount = 1; Ball *grabbedBall = NULL; // A pointer to the current ball that is grabbed Vector2 pressOffset = {0}; // Mouse press offset relative to the ball that grabbedd @@ -75,8 +76,8 @@ int main(void) // Checks if a ball was grabbed if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) { - for (int i = ballQuantity - 1; i >= 0; i--) { - + for (int i = ballCount - 1; i >= 0; i--) + { Ball *ball = &balls[i]; pressOffset.x = mousePos.x - ball->pos.x; pressOffset.y = mousePos.y - ball->pos.y; @@ -89,7 +90,6 @@ int main(void) grabbedBall = ball; break; } - } } @@ -104,37 +104,38 @@ int main(void) } // Creates a new ball - if (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT) || (IsKeyDown(KEY_LEFT_CONTROL) && IsMouseButtonDown(MOUSE_BUTTON_RIGHT))) { - if (ballQuantity < MAX_BALLS) { - balls[ballQuantity++] = (Ball) { + if (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT) || (IsKeyDown(KEY_LEFT_CONTROL) && IsMouseButtonDown(MOUSE_BUTTON_RIGHT))) + { + if (ballCount < MAX_BALLS) + { + balls[ballCount++] = (Ball){ .pos = mousePos, - .vel = {GetRandomValue(-300, 300), GetRandomValue(-300, 300)}, - .ppos = {0}, + .vel = { GetRandomValue(-300, 300), GetRandomValue(-300, 300) }, + .ppos = { 0 }, .radius = 20 + GetRandomValue(0, 30), .friction = 0.99, .elasticity = 0.9, - .color = {GetRandomValue(0, 255), GetRandomValue(0, 255), GetRandomValue(0, 255), 255}, + .color = { GetRandomValue(0, 255), GetRandomValue(0, 255), GetRandomValue(0, 255), 255 }, .grabbed = false }; } } // Shake balls - if (IsMouseButtonPressed(MOUSE_BUTTON_MIDDLE)) { - for (int i = 0; i < ballQuantity; i++) { - Ball *ball = &balls[i]; - if (!ball->grabbed) { - ball->vel = (Vector2) {GetRandomValue(-2000, 2000), GetRandomValue(-2000, 2000)}; - } + if (IsMouseButtonPressed(MOUSE_BUTTON_MIDDLE)) + { + for (int i = 0; i < ballCount; i++) + { + if (!balls[i].grabbed) balls[i].vel = (Vector2){ GetRandomValue(-2000, 2000), GetRandomValue(-2000, 2000) }; } } // Changes gravity - gravity += GetMouseWheelMove() * 5; + gravity += GetMouseWheelMove()*5; // Updates each ball state - for (int i = 0; i < ballQuantity; i++) { - + for (int i = 0; i < ballCount; i++) + { Ball *ball = &balls[i]; // The ball is not grabbed @@ -145,48 +146,47 @@ int main(void) ball->pos.y += ball->vel.y * delta; // Does the ball hit the screen right boundary? - if (ball->pos.x + ball->radius >= screenWidth) + if ((ball->pos.x + ball->radius) >= screenWidth) { ball->pos.x = screenWidth - ball->radius; // Ball repositioning - ball->vel.x = -ball->vel.x * ball->elasticity; // Elasticity makes the ball lose 10% of its velocity on hit + ball->vel.x = -ball->vel.x*ball->elasticity; // Elasticity makes the ball lose 10% of its velocity on hit } // Does the ball hit the screen left boundary? - else if (ball->pos.x - ball->radius <= 0) + else if ((ball->pos.x - ball->radius) <= 0) { ball->pos.x = ball->radius; - ball->vel.x = -ball->vel.x * ball->elasticity; + ball->vel.x = -ball->vel.x*ball->elasticity; } // The same for y axis - if (ball->pos.y + ball->radius >= screenHeight) + if ((ball->pos.y + ball->radius) >= screenHeight) { ball->pos.y = screenHeight - ball->radius; - ball->vel.y = -ball->vel.y * ball->elasticity; + ball->vel.y = -ball->vel.y*ball->elasticity; } - else if (ball->pos.y - ball->radius <= 0) + else if ((ball->pos.y - ball->radius) <= 0) { ball->pos.y = ball->radius; - ball->vel.y = -ball->vel.y * ball->elasticity; + ball->vel.y = -ball->vel.y*ball->elasticity; } // Friction makes the ball lose 1% of its velocity each frame - ball->vel.x = ball->vel.x * ball->friction; + ball->vel.x = ball->vel.x*ball->friction; // Gravity affects only the y axis - ball->vel.y = ball->vel.y * ball->friction + gravity; - + ball->vel.y = ball->vel.y*ball->friction + gravity; } else { // Ball repositioning using the mouse position ball->pos.x = mousePos.x - pressOffset.x; ball->pos.y = mousePos.y - pressOffset.y; + // While the ball is grabbed, recalculates its velocity - ball->vel.x = (ball->pos.x - ball->ppos.x) / delta; - ball->vel.y = (ball->pos.y - ball->ppos.y) / delta; + ball->vel.x = (ball->pos.x - ball->ppos.x)/delta; + ball->vel.y = (ball->pos.y - ball->ppos.y)/delta; ball->ppos = ball->pos; } } - //---------------------------------------------------------------------------------- // Draw @@ -195,19 +195,18 @@ int main(void) ClearBackground(RAYWHITE); - for (int i = 0; i < ballQuantity; i++) + for (int i = 0; i < ballCount; i++) { - Ball *ball = &balls[i]; - DrawCircleV(ball->pos, ball->radius, ball->color); - DrawCircleLinesV(ball->pos, ball->radius, BLACK); + DrawCircleV(balls[i].pos, balls[i].radius, balls[i].color); + DrawCircleLinesV(balls[i].pos, balls[i].radius, BLACK); } - DrawText("grab a ball by pressing with the mouse and throw it by releasing", 10, 10, 20, DARKGRAY); - DrawText("right click to create new balls (keep left control pressed to create a lot)", 10, 30, 20, DARKGRAY); - DrawText("use mouse wheel to change gravity", 10, 50, 20, DARKGRAY); - DrawText("middle click to shake", 10, 70, 20, DARKGRAY); - DrawText(TextFormat("ball quantity: %d", ballQuantity), 10, GetScreenHeight() - 55, 20, BLACK); - DrawText(TextFormat("gravity: %.2f", gravity), 10, GetScreenHeight() - 35, 20, BLACK); + DrawText("grab a ball by pressing with the mouse and throw it by releasing", 10, 10, 10, DARKGRAY); + DrawText("right click to create new balls (keep left control pressed to create a lot)", 10, 30, 10, DARKGRAY); + DrawText("use mouse wheel to change gravity", 10, 50, 10, DARKGRAY); + DrawText("middle click to shake", 10, 70, 10, DARKGRAY); + DrawText(TextFormat("BALL COUNT: %d", ballCount), 10, GetScreenHeight() - 70, 20, BLACK); + DrawText(TextFormat("GRAVITY: %.2f", gravity), 10, GetScreenHeight() - 40, 20, BLACK); EndDrawing(); //---------------------------------------------------------------------------------- diff --git a/examples/shapes/shapes_ball_physics.png b/examples/shapes/shapes_ball_physics.png index 1e4c86f14d077ebd65f47bb47b078f10f2425a0a..89493275c49616f7777ecec5a638be81160cd951 100644 GIT binary patch literal 23245 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 literal 43216 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 Mp00i_>zopr0H + + + + 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_ball_physics + 10.0 + shapes_ball_physics + + + + 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 07068d34c..b541b10fe 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -421,6 +421,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rlgl_triangle", "exa EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_stacking", "examples\textures_sprite_stacking.vcxproj", "{FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_ball_physics", "examples\shapes_ball_physics.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -5235,6 +5237,30 @@ Global {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x64.Build.0 = Release|x64 {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x86.ActiveCfg = Release|Win32 {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.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 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -5447,6 +5473,7 @@ Global {32FE2658-1D70-442E-8672-0AC5C6F0BD7B} = {278D8859-20B1-428F-8448-064F46E1F021} {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F} = {278D8859-20B1-428F-8448-064F46E1F021} {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {278D8859-20B1-428F-8448-064F46E1F021} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} diff --git a/tools/rexm/reports/examples_validation.md b/tools/rexm/reports/examples_validation.md index af3befad9..831dbd978 100644 --- a/tools/rexm/reports/examples_validation.md +++ b/tools/rexm/reports/examples_validation.md @@ -103,6 +103,7 @@ Example elements validated: | shapes_math_angle_rotation | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_rlgl_color_wheel | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_rlgl_triangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_ball_physics | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_logo_raylib | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_srcrec_dstrec | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_image_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |