From 040b945fefc341a8f17ab34cdc8fa2a8be6fac96 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 8 Nov 2023 20:09:32 +0100 Subject: [PATCH] Reviewed some examples and warnings --- examples/Makefile.Web | 2 +- examples/core/core_storage_values.c | 4 +- examples/models/models_animation.c | 2 +- examples/models/models_loading_gltf.c | 2 +- examples/models/models_loading_m3d.c | 2 +- examples/shapes/shapes_bouncing_ball.c | 3 - examples/shapes/shapes_splines_drawing.c | 12 +- examples/text/text_font_sdf.c | 2 +- examples/textures/textures_textured_curve.c | 155 ++++++++------------ 9 files changed, 77 insertions(+), 107 deletions(-) diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 022cd1eb..e8a72661 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -941,7 +941,7 @@ shaders/shaders_deferred_render: shaders/shaders_deferred_render.c --preload-file shaders/resources/shaders/glsl330/gbuffer.vs@resources/shaders/glsl330/gbuffer.vs \ --preload-file shaders/resources/shaders/glsl330/gbuffer.fs@resources/shaders/glsl330/gbuffer.fs \ --preload-file shaders/resources/shaders/glsl330/deferred_shading.fs@resources/shaders/glsl330/deferred_shading.fs \ - --preload-file shaders/resources/shaders/glsl330/deferred_shading.fs@resources/shaders/glsl330/deferred_shading.fs \ + --preload-file shaders/resources/shaders/glsl330/deferred_shading.fs@resources/shaders/glsl330/deferred_shading.fs shaders/shaders_eratosthenes: shaders/shaders_eratosthenes.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ diff --git a/examples/core/core_storage_values.c b/examples/core/core_storage_values.c index 12739912..c7fd7d9b 100644 --- a/examples/core/core_storage_values.c +++ b/examples/core/core_storage_values.c @@ -104,7 +104,7 @@ int main(void) bool SaveStorageValue(unsigned int position, int value) { bool success = false; - unsigned int dataSize = 0; + int dataSize = 0; unsigned int newDataSize = 0; unsigned char *fileData = LoadFileData(STORAGE_DATA_FILE, &dataSize); unsigned char *newFileData = NULL; @@ -172,7 +172,7 @@ bool SaveStorageValue(unsigned int position, int value) int LoadStorageValue(unsigned int position) { int value = 0; - unsigned int dataSize = 0; + int dataSize = 0; unsigned char *fileData = LoadFileData(STORAGE_DATA_FILE, &dataSize); if (fileData != NULL) diff --git a/examples/models/models_animation.c b/examples/models/models_animation.c index ffe2d012..8e6f7f87 100644 --- a/examples/models/models_animation.c +++ b/examples/models/models_animation.c @@ -48,7 +48,7 @@ int main(void) Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position // Load animation data - unsigned int animsCount = 0; + int animsCount = 0; ModelAnimation *anims = LoadModelAnimations("resources/models/iqm/guyanim.iqm", &animsCount); int animFrameCounter = 0; diff --git a/examples/models/models_loading_gltf.c b/examples/models/models_loading_gltf.c index 28847316..1d5d516f 100644 --- a/examples/models/models_loading_gltf.c +++ b/examples/models/models_loading_gltf.c @@ -44,7 +44,7 @@ int main(void) Model model = LoadModel("resources/models/gltf/robot.glb"); // Load gltf model animations - unsigned int animsCount = 0; + int animsCount = 0; unsigned int animIndex = 0; unsigned int animCurrentFrame = 0; ModelAnimation *modelAnimations = LoadModelAnimations("resources/models/gltf/robot.glb", &animsCount); diff --git a/examples/models/models_loading_m3d.c b/examples/models/models_loading_m3d.c index dd164957..71dbc8d7 100644 --- a/examples/models/models_loading_m3d.c +++ b/examples/models/models_loading_m3d.c @@ -50,7 +50,7 @@ int main(void) Model model = LoadModel(modelFileName); // Load the bind-pose model mesh and basic data // Load animations - unsigned int animsCount = 0; + int animsCount = 0; int animFrameCounter = 0, animId = 0; ModelAnimation *anims = LoadModelAnimations(modelFileName, &animsCount); // Load skeletal animation data diff --git a/examples/shapes/shapes_bouncing_ball.c b/examples/shapes/shapes_bouncing_ball.c index 16273b65..38fade60 100644 --- a/examples/shapes/shapes_bouncing_ball.c +++ b/examples/shapes/shapes_bouncing_ball.c @@ -67,9 +67,6 @@ int main(void) // On pause, we draw a blinking message if (pause && ((framesCounter/30)%2)) DrawText("PAUSED", 350, 200, 30, GRAY); - DrawCircle(400.5f, 300.5f, 50.0f, BLACK); - DrawCircle(528.0f, 172.0f, 26.0f, BLACK); - DrawFPS(10, 10); EndDrawing(); diff --git a/examples/shapes/shapes_splines_drawing.c b/examples/shapes/shapes_splines_drawing.c index cfac931b..17dd0075 100644 --- a/examples/shapes/shapes_splines_drawing.c +++ b/examples/shapes/shapes_splines_drawing.c @@ -2,7 +2,7 @@ * * raylib [shapes] example - splines drawing * -* Example originally created with raylib 4.6-dev, last time updated with raylib 4.6-dev +* Example originally created with raylib 5.0, last time updated with raylib 5.0 * * Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, * BSD-like license that allows static linking with closed source software @@ -17,7 +17,7 @@ #define MAX_SPLINE_POINTS 32 -// Bezier spline control points +// Cubic Bezier spline control points // NOTE: Every segment has two control points typedef struct { Vector2 start; @@ -26,10 +26,10 @@ typedef struct { // Spline types typedef enum { - SPLINE_LINEAR = 0, - SPLINE_BASIS, // B-Spline - SPLINE_CATMULLROM, - SPLINE_BEZIER + SPLINE_LINEAR = 0, // Linear + SPLINE_BASIS, // B-Spline + SPLINE_CATMULLROM, // Catmull-Rom + SPLINE_BEZIER // Cubic Bezier } SplineType; //------------------------------------------------------------------------------------ diff --git a/examples/text/text_font_sdf.c b/examples/text/text_font_sdf.c index cba47b43..40a3fa4d 100644 --- a/examples/text/text_font_sdf.c +++ b/examples/text/text_font_sdf.c @@ -38,7 +38,7 @@ int main(void) const char msg[50] = "Signed Distance Fields"; // Loading file to memory - unsigned int fileSize = 0; + int fileSize = 0; unsigned char *fileData = LoadFileData("resources/anonymous_pro_bold.ttf", &fileSize); // Default font generation from TTF font diff --git a/examples/textures/textures_textured_curve.c b/examples/textures/textures_textured_curve.c index 9eddc9f6..cf426bec 100644 --- a/examples/textures/textures_textured_curve.c +++ b/examples/textures/textures_textured_curve.c @@ -13,7 +13,6 @@ * ********************************************************************************************/ - #include "raylib.h" #include "raymath.h" @@ -43,12 +42,8 @@ static Vector2 *curveSelectedPoint = NULL; //---------------------------------------------------------------------------------- // Module Functions Declaration //---------------------------------------------------------------------------------- -static void UpdateOptions(void); -static void UpdateCurve(void); -static void DrawCurve(void); static void DrawTexturedCurve(void); - //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ @@ -81,9 +76,31 @@ int main() { // Update //---------------------------------------------------------------------------------- - UpdateCurve(); - UpdateOptions(); - + // Curve config options + if (IsKeyPressed(KEY_SPACE)) showCurve = !showCurve; + if (IsKeyPressed(KEY_EQUAL)) curveWidth += 2; + if (IsKeyPressed(KEY_MINUS)) curveWidth -= 2; + if (curveWidth < 2) curveWidth = 2; + + // Update segments + if (IsKeyPressed(KEY_LEFT)) curveSegments -= 2; + if (IsKeyPressed(KEY_RIGHT)) curveSegments += 2; + + if (curveSegments < 2) curveSegments = 2; + + // Update curve logic + // If the mouse is not down, we are not editing the curve so clear the selection + if (!IsMouseButtonDown(MOUSE_LEFT_BUTTON)) curveSelectedPoint = NULL; + + // If a point was selected, move it + if (curveSelectedPoint) *curveSelectedPoint = Vector2Add(*curveSelectedPoint, GetMouseDelta()); + + // The mouse is down, and nothing was selected, so see if anything was picked + Vector2 mouse = GetMousePosition(); + if (CheckCollisionPointCircle(mouse, curveStartPosition, 6)) curveSelectedPoint = &curveStartPosition; + else if (CheckCollisionPointCircle(mouse, curveStartPositionTangent, 6)) curveSelectedPoint = &curveStartPositionTangent; + else if (CheckCollisionPointCircle(mouse, curveEndPosition, 6)) curveSelectedPoint = &curveEndPosition; + else if (CheckCollisionPointCircle(mouse, curveEndPositionTangent, 6)) curveSelectedPoint = &curveEndPositionTangent; //---------------------------------------------------------------------------------- // Draw @@ -92,9 +109,29 @@ int main() ClearBackground(RAYWHITE); - DrawTexturedCurve(); - DrawCurve(); - + DrawTexturedCurve(); // Draw a textured Spline Cubic Bezier + + // Draw spline for reference + if (showCurve) DrawSplineSegmentBezierCubic(curveStartPosition, curveEndPosition, curveStartPositionTangent, curveEndPositionTangent, 2, BLUE); + + // Draw the various control points and highlight where the mouse is + DrawLineV(curveStartPosition, curveStartPositionTangent, SKYBLUE); + DrawLineV(curveStartPositionTangent, curveEndPositionTangent, Fade(LIGHTGRAY, 0.4f)); + DrawLineV(curveEndPosition, curveEndPositionTangent, PURPLE); + + if (CheckCollisionPointCircle(mouse, curveStartPosition, 6)) DrawCircleV(curveStartPosition, 7, YELLOW); + DrawCircleV(curveStartPosition, 5, RED); + + if (CheckCollisionPointCircle(mouse, curveStartPositionTangent, 6)) DrawCircleV(curveStartPositionTangent, 7, YELLOW); + DrawCircleV(curveStartPositionTangent, 5, MAROON); + + if (CheckCollisionPointCircle(mouse, curveEndPosition, 6)) DrawCircleV(curveEndPosition, 7, YELLOW); + DrawCircleV(curveEndPosition, 5, GREEN); + + if (CheckCollisionPointCircle(mouse, curveEndPositionTangent, 6)) DrawCircleV(curveEndPositionTangent, 7, YELLOW); + DrawCircleV(curveEndPositionTangent, 5, DARKGREEN); + + // Draw usage info DrawText("Drag points to move curve, press SPACE to show/hide base curve", 10, 10, 10, DARKGRAY); DrawText(TextFormat("Curve width: %2.0f (Use + and - to adjust)", curveWidth), 10, 30, 10, DARKGRAY); DrawText(TextFormat("Curve segments: %d (Use LEFT and RIGHT to adjust)", curveSegments), 10, 50, 10, DARKGRAY); @@ -116,54 +153,8 @@ int main() //---------------------------------------------------------------------------------- // Module Functions Definition //---------------------------------------------------------------------------------- -static void DrawCurve(void) -{ - if (showCurve) DrawSplineSegmentBezierCubic(curveStartPosition, curveEndPosition, curveStartPositionTangent, curveEndPositionTangent, 2, BLUE); - - // Draw the various control points and highlight where the mouse is - DrawLineV(curveStartPosition, curveStartPositionTangent, SKYBLUE); - DrawLineV(curveStartPositionTangent, curveEndPositionTangent, Fade(LIGHTGRAY, 0.4f)); - DrawLineV(curveEndPosition, curveEndPositionTangent, PURPLE); - Vector2 mouse = GetMousePosition(); - - if (CheckCollisionPointCircle(mouse, curveStartPosition, 6)) DrawCircleV(curveStartPosition, 7, YELLOW); - DrawCircleV(curveStartPosition, 5, RED); - - if (CheckCollisionPointCircle(mouse, curveStartPositionTangent, 6)) DrawCircleV(curveStartPositionTangent, 7, YELLOW); - DrawCircleV(curveStartPositionTangent, 5, MAROON); - - if (CheckCollisionPointCircle(mouse, curveEndPosition, 6)) DrawCircleV(curveEndPosition, 7, YELLOW); - DrawCircleV(curveEndPosition, 5, GREEN); - - if (CheckCollisionPointCircle(mouse, curveEndPositionTangent, 6)) DrawCircleV(curveEndPositionTangent, 7, YELLOW); - DrawCircleV(curveEndPositionTangent, 5, DARKGREEN); -} - -static void UpdateCurve(void) -{ - // If the mouse is not down, we are not editing the curve so clear the selection - if (!IsMouseButtonDown(MOUSE_LEFT_BUTTON)) - { - curveSelectedPoint = NULL; - return; - } - - // If a point was selected, move it - if (curveSelectedPoint) - { - *curveSelectedPoint = Vector2Add(*curveSelectedPoint, GetMouseDelta()); - return; - } - - // The mouse is down, and nothing was selected, so see if anything was picked - Vector2 mouse = GetMousePosition(); - - if (CheckCollisionPointCircle(mouse, curveStartPosition, 6)) curveSelectedPoint = &curveStartPosition; - else if (CheckCollisionPointCircle(mouse, curveStartPositionTangent, 6)) curveSelectedPoint = &curveStartPositionTangent; - else if (CheckCollisionPointCircle(mouse, curveEndPosition, 6)) curveSelectedPoint = &curveEndPosition; - else if (CheckCollisionPointCircle(mouse, curveEndPositionTangent, 6)) curveSelectedPoint = &curveEndPositionTangent; -} +// Draw textured curve using Spline Cubic Bezier static void DrawTexturedCurve(void) { const float step = 1.0f/curveSegments; @@ -180,11 +171,11 @@ static void DrawTexturedCurve(void) for (int i = 1; i <= curveSegments; i++) { - // Segment the curve - t = step*i; - float a = powf(1 - t, 3); - float b = 3*powf(1 - t, 2)*t; - float c = 3*(1 - t)*powf(t, 2); + t = step*(float)i; + + float a = powf(1.0f - t, 3); + float b = 3.0f*powf(1.0f - t, 2)*t; + float c = 3.0f*(1.0f - t)*powf(t, 2); float d = powf(t, 3); // Compute the endpoint for this segment @@ -217,22 +208,20 @@ static void DrawTexturedCurve(void) // Draw the segment as a quad rlSetTexture(texRoad.id); rlBegin(RL_QUADS); + rlColor4ub(255,255,255,255); + rlNormal3f(0.0f, 0.0f, 1.0f); - rlColor4ub(255,255,255,255); - rlNormal3f(0.0f, 0.0f, 1.0f); - - rlTexCoord2f(0, previousV); - rlVertex2f(prevNegNormal.x, prevNegNormal.y); - - rlTexCoord2f(1, previousV); - rlVertex2f(prevPosNormal.x, prevPosNormal.y); + rlTexCoord2f(0, previousV); + rlVertex2f(prevNegNormal.x, prevNegNormal.y); - rlTexCoord2f(1, v); - rlVertex2f(currentPosNormal.x, currentPosNormal.y); + rlTexCoord2f(1, previousV); + rlVertex2f(prevPosNormal.x, prevPosNormal.y); - rlTexCoord2f(0, v); - rlVertex2f(currentNegNormal.x, currentNegNormal.y); + rlTexCoord2f(1, v); + rlVertex2f(currentPosNormal.x, currentPosNormal.y); + rlTexCoord2f(0, v); + rlVertex2f(currentNegNormal.x, currentNegNormal.y); rlEnd(); // The current step is the start of the next step @@ -242,19 +231,3 @@ static void DrawTexturedCurve(void) } } -static void UpdateOptions(void) -{ - if (IsKeyPressed(KEY_SPACE)) showCurve = !showCurve; - - // Update with - if (IsKeyPressed(KEY_EQUAL)) curveWidth += 2; - if (IsKeyPressed(KEY_MINUS)) curveWidth -= 2; - - if (curveWidth < 2) curveWidth = 2; - - // Update segments - if (IsKeyPressed(KEY_LEFT)) curveSegments -= 2; - if (IsKeyPressed(KEY_RIGHT)) curveSegments += 2; - - if (curveSegments < 2) curveSegments = 2; -}