From 2f6230e3669438d6a18655f26bf6dfcb58d783f3 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 12 Jan 2025 18:02:36 +0100 Subject: [PATCH] Formatting review and examples review --- examples/Makefile | 5 +- examples/Makefile.Web | 5 +- examples/core/core_2d_camera_mouse_zoom.png | Bin 16175 -> 16637 bytes examples/core/core_basic_screen_manager.c | 2 +- examples/core/core_input_gamepad_info.c | 83 ------------------ examples/core/core_input_multitouch.c | 2 +- examples/core/core_input_virtual_controls.c | 24 +---- examples/core/core_random_sequence.c | 1 - examples/models/models_gpu_skinning.png | Bin 0 -> 49846 bytes examples/models/models_mesh_generation.c | 2 +- examples/models/models_point_rendering.c | 12 +-- examples/models/models_tesseract_view.c | 4 +- examples/others/raymath_vector_angle.c | 2 +- examples/shaders/shaders_deferred_render.c | 2 +- examples/textures/textures_image_channel.c | 9 +- examples/textures/textures_image_generation.c | 2 +- 16 files changed, 30 insertions(+), 125 deletions(-) delete mode 100644 examples/core/core_input_gamepad_info.c create mode 100644 examples/models/models_gpu_skinning.png diff --git a/examples/Makefile b/examples/Makefile index f8c26f340..6c9ec1ad1 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -344,11 +344,12 @@ ifeq ($(TARGET_PLATFORM),$(filter $(TARGET_PLATFORM),PLATFORM_WEB PLATFORM_WEB_R # --preload-file resources # specify a resources folder for data compilation # --source-map-base # allow debugging in browser with source map # --shell-file shell.html # define a custom shell .html and output extension + LDFLAGS += -sTOTAL_MEMORY=$(BUILD_WEB_HEAP_SIZE) -sFORCE_FILESYSTEM=1 -sMINIFY_HTML=0 + + # Using GLFW3 library (instead of RGFW) ifeq ($(TARGET_PLATFORM),PLATFORM_WEB) LDFLAGS += -sUSE_GLFW=3 endif - - LDFLAGS += -sTOTAL_MEMORY=$(BUILD_WEB_HEAP_SIZE) -sFORCE_FILESYSTEM=1 # Build using asyncify ifeq ($(BUILD_WEB_ASYNCIFY),TRUE) diff --git a/examples/Makefile.Web b/examples/Makefile.Web index d44b99dde..3de6eaf8b 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -280,12 +280,13 @@ ifeq ($(PLATFORM),$(filter $(PLATFORM),PLATFORM_WEB PLATFORM_WEB_RGFW)) # --preload-file resources # specify a resources folder for data compilation # --source-map-base # allow debugging in browser with source map # --shell-file shell.html # define a custom shell .html and output extension + LDFLAGS += -sTOTAL_MEMORY=$(BUILD_WEB_HEAP_SIZE) -sFORCE_FILESYSTEM=1 -sEXPORTED_RUNTIME_METHODS=ccall -sMINIFY_HTML=0 + + # Using GLFW3 library (instead of RGFW) ifeq ($(PLATFORM),PLATFORM_WEB) LDFLAGS += -sUSE_GLFW=3 endif - LDFLAGS += -sEXPORTED_RUNTIME_METHODS=ccall -s - # Build using asyncify ifeq ($(BUILD_WEB_ASYNCIFY),TRUE) LDFLAGS += -sASYNCIFY diff --git a/examples/core/core_2d_camera_mouse_zoom.png b/examples/core/core_2d_camera_mouse_zoom.png index b920d5c7bd471f7ec062394d8eefae4f634f1ef1..1c8ab1f2dd75488d55fee42813080d4573694974 100644 GIT binary patch literal 16637 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 TbP0l+XkKd_AKX diff --git a/examples/core/core_basic_screen_manager.c b/examples/core/core_basic_screen_manager.c index 728ef1257..df38a0623 100644 --- a/examples/core/core_basic_screen_manager.c +++ b/examples/core/core_basic_screen_manager.c @@ -46,7 +46,7 @@ int main(void) { // Update //---------------------------------------------------------------------------------- - switch(currentScreen) + switch (currentScreen) { case LOGO: { diff --git a/examples/core/core_input_gamepad_info.c b/examples/core/core_input_gamepad_info.c deleted file mode 100644 index 096294681..000000000 --- a/examples/core/core_input_gamepad_info.c +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - Gamepad information -* -* NOTE: This example requires a Gamepad connected to the system -* Check raylib.h for buttons configuration -* -* Example originally created with raylib 4.6, last time updated with raylib 4.6 -* -* 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) 2013-2024 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - SetConfigFlags(FLAG_MSAA_4X_HINT); // Set MSAA 4X hint before windows creation - - InitWindow(screenWidth, screenHeight, "raylib [core] example - gamepad information"); - - 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 - //---------------------------------------------------------------------------------- - // TODO: Update your variables here - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - for (int i = 0, y = 5; i < 4; i++) // MAX_GAMEPADS = 4 - { - if (IsGamepadAvailable(i)) - { - DrawText(TextFormat("Gamepad name: %s", GetGamepadName(i)), 10, y, 10, BLACK); - y += 11; - DrawText(TextFormat("\tAxis count: %d", GetGamepadAxisCount(i)), 10, y, 10, BLACK); - y += 11; - - for (int axis = 0; axis < GetGamepadAxisCount(i); axis++) - { - DrawText(TextFormat("\tAxis %d = %f", axis, GetGamepadAxisMovement(i, axis)), 10, y, 10, BLACK); - y += 11; - } - - for (int button = 0; button < 32; button++) - { - DrawText(TextFormat("\tButton %d = %d", button, IsGamepadButtonDown(i, button)), 10, y, 10, BLACK); - y += 11; - } - } - } - - DrawFPS(GetScreenWidth() - 100, 100); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- -} diff --git a/examples/core/core_input_multitouch.c b/examples/core/core_input_multitouch.c index 73b363576..093b6f386 100644 --- a/examples/core/core_input_multitouch.c +++ b/examples/core/core_input_multitouch.c @@ -42,7 +42,7 @@ int main(void) // Get the touch point count ( how many fingers are touching the screen ) int tCount = GetTouchPointCount(); // Clamp touch points available ( set the maximum touch points allowed ) - if(tCount > MAX_TOUCH_POINTS) tCount = MAX_TOUCH_POINTS; + if (tCount > MAX_TOUCH_POINTS) tCount = MAX_TOUCH_POINTS; // Get touch points positions for (int i = 0; i < tCount; ++i) touchPositions[i] = GetTouchPosition(i); //---------------------------------------------------------------------------------- diff --git a/examples/core/core_input_virtual_controls.c b/examples/core/core_input_virtual_controls.c index 76eeafee4..799c927c0 100644 --- a/examples/core/core_input_virtual_controls.c +++ b/examples/core/core_input_virtual_controls.c @@ -115,26 +115,10 @@ int main(void) // Move player according to pressed button switch (pressedButton) { - case BUTTON_UP: - { - playerPosition.y -= playerSpeed*GetFrameTime(); - break; - } - case BUTTON_LEFT: - { - playerPosition.x -= playerSpeed*GetFrameTime(); - break; - } - case BUTTON_RIGHT: - { - playerPosition.x += playerSpeed*GetFrameTime(); - break; - } - case BUTTON_DOWN: - { - playerPosition.y += playerSpeed*GetFrameTime(); - break; - } + case BUTTON_UP: playerPosition.y -= playerSpeed*GetFrameTime(); break; + case BUTTON_LEFT: playerPosition.x -= playerSpeed*GetFrameTime(); break; + case BUTTON_RIGHT: playerPosition.x += playerSpeed*GetFrameTime(); break; + case BUTTON_DOWN: playerPosition.y += playerSpeed*GetFrameTime(); break; default: break; }; diff --git a/examples/core/core_random_sequence.c b/examples/core/core_random_sequence.c index 417440449..2cb067db4 100644 --- a/examples/core/core_random_sequence.c +++ b/examples/core/core_random_sequence.c @@ -174,7 +174,6 @@ static void DrawTextCenterKeyHelp(const char *key, const char *text, int posX, i int pressSize = MeasureText("Press", fontSize); int keySize = MeasureText(key, fontSize); int textSize = MeasureText(text, fontSize); - int totalSize = pressSize + 2*spaceSize + keySize + 2*spaceSize + textSize; int textSizeCurrent = 0; DrawText("Press", posX, posY, fontSize, color); diff --git a/examples/models/models_gpu_skinning.png b/examples/models/models_gpu_skinning.png new file mode 100644 index 0000000000000000000000000000000000000000..8003c16effa5a8c60f4867b23c3b51b9da258eed GIT binary patch literal 49846 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 literal 0 HcmV?d00001 diff --git a/examples/models/models_mesh_generation.c b/examples/models/models_mesh_generation.c index 59aebe7c9..03dc2b067 100644 --- a/examples/models/models_mesh_generation.c +++ b/examples/models/models_mesh_generation.c @@ -112,7 +112,7 @@ int main(void) DrawRectangleLines(30, 400, 310, 30, Fade(DARKBLUE, 0.5f)); DrawText("MOUSE LEFT BUTTON to CYCLE PROCEDURAL MODELS", 40, 410, 10, BLUE); - switch(currentModel) + switch (currentModel) { case 0: DrawText("PLANE", 680, 10, 20, DARKBLUE); break; case 1: DrawText("CUBE", 680, 10, 20, DARKBLUE); break; diff --git a/examples/models/models_point_rendering.c b/examples/models/models_point_rendering.c index 68d498453..d33cbdda8 100644 --- a/examples/models/models_point_rendering.c +++ b/examples/models/models_point_rendering.c @@ -22,7 +22,7 @@ #define MIN_POINTS 1000 // 1 thousand // Generate mesh using points -Mesh GenMeshPoints(int numPoints); +static Mesh GenMeshPoints(int numPoints); //------------------------------------------------------------------------------------ // Program main entry point @@ -56,7 +56,7 @@ int main() //-------------------------------------------------------------------------------------- // Main game loop - while(!WindowShouldClose()) + while (!WindowShouldClose()) { // Update //---------------------------------------------------------------------------------- @@ -147,7 +147,7 @@ int main() } // Generate a spherical point cloud -Mesh GenMeshPoints(int numPoints) +static Mesh GenMeshPoints(int numPoints) { Mesh mesh = { .triangleCount = 1, @@ -159,9 +159,9 @@ Mesh GenMeshPoints(int numPoints) // https://en.wikipedia.org/wiki/Spherical_coordinate_system for (int i = 0; i < numPoints; i++) { - float theta = PI*rand()/RAND_MAX; - float phi = 2.0f*PI*rand()/RAND_MAX; - float r = 10.0f*rand()/RAND_MAX; + float theta = ((float)PI*rand())/RAND_MAX; + float phi = (2.0f*PI*rand())/RAND_MAX; + float r = (10.0f*rand())/RAND_MAX; mesh.vertices[i*3 + 0] = r*sin(theta)*cos(phi); mesh.vertices[i*3 + 1] = r*sin(theta)*sin(phi); diff --git a/examples/models/models_tesseract_view.c b/examples/models/models_tesseract_view.c index 411b59497..495e9af9c 100644 --- a/examples/models/models_tesseract_view.c +++ b/examples/models/models_tesseract_view.c @@ -74,7 +74,7 @@ int main(void) // Projection from XYZW to XYZ from perspective point (0, 0, 0, 3) // NOTE: Trace a ray from (0, 0, 0, 3) > p and continue until W = 0 - float c = 3/(3 - p.w); + float c = 3.0f/(3.0f - p.w); p.x = c * p.x; p.y = c * p.y; p.z = c * p.z; @@ -95,7 +95,7 @@ int main(void) for (int i = 0; i < 16; i++) { // Draw spheres to indicate the W value - DrawSphere(transformed[i], fabsf(wValues[i]*0.1), RED); + DrawSphere(transformed[i], fabsf(wValues[i]*0.1f), RED); for (int j = 0; j < 16; j++) { diff --git a/examples/others/raymath_vector_angle.c b/examples/others/raymath_vector_angle.c index d0f81548c..5a69345b4 100644 --- a/examples/others/raymath_vector_angle.c +++ b/examples/others/raymath_vector_angle.c @@ -51,7 +51,7 @@ int main(void) if (IsKeyPressed(KEY_SPACE)) angleMode = !angleMode; - if(angleMode == 0 && IsMouseButtonDown(MOUSE_BUTTON_RIGHT)) v1 = GetMousePosition(); + if ((angleMode == 0) && IsMouseButtonDown(MOUSE_BUTTON_RIGHT)) v1 = GetMousePosition(); if (angleMode == 0) { diff --git a/examples/shaders/shaders_deferred_render.c b/examples/shaders/shaders_deferred_render.c index e5c549e5a..e03ad6009 100644 --- a/examples/shaders/shaders_deferred_render.c +++ b/examples/shaders/shaders_deferred_render.c @@ -273,7 +273,7 @@ int main(void) // that represent light positions in default forward rendering BeginMode3D(camera); rlEnableShader(rlGetShaderIdDefault()); - for(int i = 0; i < MAX_LIGHTS; i++) + for (int i = 0; i < MAX_LIGHTS; i++) { if (lights[i].enabled) DrawSphereEx(lights[i].position, 0.2f, 8, 8, lights[i].color); else DrawSphereWires(lights[i].position, 0.2f, 8, 8, ColorAlpha(lights[i].color, 0.3f)); diff --git a/examples/textures/textures_image_channel.c b/examples/textures/textures_image_channel.c index 39618c5f4..9afcda638 100644 --- a/examples/textures/textures_image_channel.c +++ b/examples/textures/textures_image_channel.c @@ -24,7 +24,6 @@ int main(void) { // Initialization //-------------------------------------------------------------------------------------- - const int screenWidth = 800; const int screenHeight = 450; @@ -60,8 +59,6 @@ int main(void) UnloadImage(imageBlue); UnloadImage(backgroundImage); - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - Rectangle fudesumiRec = {0, 0, fudesumiImage.width, fudesumiImage.height}; Rectangle fudesumiPos = {50, 10, fudesumiImage.width*0.8f, fudesumiImage.height*0.8f}; @@ -70,11 +67,17 @@ int main(void) Rectangle bluePos = { 410, 230, fudesumiPos.width / 2, fudesumiPos.height / 2 }; Rectangle alphaPos = { 600, 230, fudesumiPos.width / 2, fudesumiPos.height / 2 }; + SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { + // Draw + //---------------------------------------------------------------------------------- + // TODO... + //---------------------------------------------------------------------------------- + // Draw //---------------------------------------------------------------------------------- BeginDrawing(); diff --git a/examples/textures/textures_image_generation.c b/examples/textures/textures_image_generation.c index 97e43f007..47f9a9eb0 100644 --- a/examples/textures/textures_image_generation.c +++ b/examples/textures/textures_image_generation.c @@ -88,7 +88,7 @@ int main(void) DrawRectangleLines(30, 400, 325, 30, Fade(WHITE, 0.5f)); DrawText("MOUSE LEFT BUTTON to CYCLE PROCEDURAL TEXTURES", 40, 410, 10, WHITE); - switch(currentTexture) + switch (currentTexture) { case 0: DrawText("VERTICAL GRADIENT", 560, 10, 20, RAYWHITE); break; case 1: DrawText("HORIZONTAL GRADIENT", 540, 10, 20, RAYWHITE); break;