From fefe8fcda96db357ab4b93490d0453f4b3058cc6 Mon Sep 17 00:00:00 2001 From: Asdqwe Date: Wed, 30 Aug 2023 17:40:49 -0300 Subject: [PATCH] Fix examples/others/easings_testbed.c help instructions and small tweak (#3277) --- examples/others/easings_testbed.c | 22 +++++++++++----------- examples/others/easings_testbed.png | Bin 17338 -> 17443 bytes 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/others/easings_testbed.c b/examples/others/easings_testbed.c index 227efd231ef0..45f0efd0b556 100644 --- a/examples/others/easings_testbed.c +++ b/examples/others/easings_testbed.c @@ -108,7 +108,7 @@ int main(void) InitWindow(screenWidth, screenHeight, "raylib [easings] example - easings testbed"); - Vector2 ballPosition = { 100.0f, 200.0f }; + Vector2 ballPosition = { 100.0f, 100.0f }; float t = 0.0f; // Current time (in any unit measure, but same unit as duration) float d = 300.0f; // Total time it should take to complete (duration) @@ -180,8 +180,8 @@ int main(void) // Movement computation if (!paused && ((boundedT && t < d) || !boundedT)) { - ballPosition.x = Easings[easingX].func(t, 100.0f, 700.0f - 100.0f, d); - ballPosition.y = Easings[easingY].func(t, 100.0f, 400.0f - 100.0f, d); + ballPosition.x = Easings[easingX].func(t, 100.0f, 700.0f - 170.0f, d); + ballPosition.y = Easings[easingY].func(t, 100.0f, 400.0f - 170.0f, d); t += 1.0f; } //---------------------------------------------------------------------------------- @@ -193,15 +193,15 @@ int main(void) ClearBackground(RAYWHITE); // Draw information text - DrawText(TextFormat("Easing x: %s", Easings[easingX].name), 0, FONT_SIZE*2, FONT_SIZE, LIGHTGRAY); - DrawText(TextFormat("Easing y: %s", Easings[easingY].name), 0, FONT_SIZE*3, FONT_SIZE, LIGHTGRAY); - DrawText(TextFormat("t (%c) = %.2f d = %.2f", (boundedT == true)? 'b' : 'u', t, d), 0, FONT_SIZE*4, FONT_SIZE, LIGHTGRAY); + DrawText(TextFormat("Easing x: %s", Easings[easingX].name), 20, FONT_SIZE, FONT_SIZE, LIGHTGRAY); + DrawText(TextFormat("Easing y: %s", Easings[easingY].name), 20, FONT_SIZE*2, FONT_SIZE, LIGHTGRAY); + DrawText(TextFormat("t (%c) = %.2f d = %.2f", (boundedT == true)? 'b' : 'u', t, d), 20, FONT_SIZE*3, FONT_SIZE, LIGHTGRAY); // Draw instructions text - DrawText("Use ENTER to play or pause movement, use SPACE to restart", 0, GetScreenHeight() - FONT_SIZE*2, FONT_SIZE, LIGHTGRAY); - DrawText("Use D and W or A and S keys to change duration", 0, GetScreenHeight() - FONT_SIZE*3, FONT_SIZE, LIGHTGRAY); - DrawText("Use LEFT or RIGHT keys to choose easing for the x axis", 0, GetScreenHeight() - FONT_SIZE*4, FONT_SIZE, LIGHTGRAY); - DrawText("Use UP or DOWN keys to choose easing for the y axis", 0, GetScreenHeight() - FONT_SIZE*5, FONT_SIZE, LIGHTGRAY); + DrawText("Use ENTER to play or pause movement, use SPACE to restart", 20, GetScreenHeight() - FONT_SIZE*2, FONT_SIZE, LIGHTGRAY); + DrawText("Use Q and W or A and S keys to change duration", 20, GetScreenHeight() - FONT_SIZE*3, FONT_SIZE, LIGHTGRAY); + DrawText("Use LEFT or RIGHT keys to choose easing for the x axis", 20, GetScreenHeight() - FONT_SIZE*4, FONT_SIZE, LIGHTGRAY); + DrawText("Use UP or DOWN keys to choose easing for the y axis", 20, GetScreenHeight() - FONT_SIZE*5, FONT_SIZE, LIGHTGRAY); // Draw ball DrawCircleV(ballPosition, 16.0f, MAROON); @@ -226,4 +226,4 @@ static float NoEase(float t, float b, float c, float d) d += burn; return b; -} \ No newline at end of file +} diff --git a/examples/others/easings_testbed.png b/examples/others/easings_testbed.png index fb0538531057f5e78e25186ba6023d4956f1db0c..05f63acdda92d4497df752a7768e01c7fbcb781e 100644 GIT binary patch literal 17443 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 TZV3GO2gKT9xA`qoeCWRc4{Unk literal 17338 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