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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

4dRTgJcW|IwV`B_9W9P_nSqK~;h2JpFPkx@oU< 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 diff --git a/projects/VS2022/examples/shapes_ball_physics.vcxproj b/projects/VS2022/examples/shapes_ball_physics.vcxproj new file mode 100644 index 000000000..47bec68f2 --- /dev/null +++ b/projects/VS2022/examples/shapes_ball_physics.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_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 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |