From 923f4b9bbd1af4bff0037807ec0f6e6514c043cd Mon Sep 17 00:00:00 2001 From: Codecat Date: Wed, 5 Jun 2019 10:35:20 +0200 Subject: [PATCH] Added waving cubes example --- examples/models/models_waving_cubes.c | 105 ++++++++++++++++++++++++ examples/models/models_waving_cubes.png | Bin 0 -> 37712 bytes 2 files changed, 105 insertions(+) create mode 100644 examples/models/models_waving_cubes.c create mode 100644 examples/models/models_waving_cubes.png diff --git a/examples/models/models_waving_cubes.c b/examples/models/models_waving_cubes.c new file mode 100644 index 000000000..0fefbcf24 --- /dev/null +++ b/examples/models/models_waving_cubes.c @@ -0,0 +1,105 @@ +/******************************************************************************************* +* +* raylib [models] example - Waving cubes +* +* This example has been created using raylib 2.5 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2019 Ramon Santamaria (@raysan5) +* +********************************************************************************************/ + +#include "raylib.h" + +#include + +int main() +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [models] example - waving cubes"); + + // Initialize the camera + Camera3D camera; + camera.position = (Vector3){ 30.0f, 20.0f, 30.0f }; + camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; + camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; + camera.fovy = 70.0f; + camera.type = CAMERA_PERSPECTIVE; + + // Specify the amount of blocks in each direction + const int numBlocks = 15; + + SetTargetFPS(60); + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + double time = GetTime(); + + // Calculate time scale for cube position and size + float scale = (2.0f + (float)sin(time)) * 0.7f; + + // Move camera around the scene + double cameraTime = time * 0.3; + camera.position.x = (float)cos(cameraTime) * 40.0f; + camera.position.z = (float)sin(cameraTime) * 40.0f; + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + BeginMode3D(camera); + + DrawGrid(10, 5.0f); + + for (int x = 0; x < numBlocks; x++) { + for (int y = 0; y < numBlocks; y++) { + for (int z = 0; z < numBlocks; z++) { + // Scale of the blocks depends on x/y/z positions + float blockScale = (x + y + z) / 30.0f; + + // Scatter makes the waving effect by adding blockScale over time + float scatter = sinf(blockScale * 20.0f + (float)(time * 4.0f)); + + // Calculate the cube position + Vector3 cubePos = { + (float)(x - numBlocks / 2) * (scale * 3.0f) + scatter, + (float)(y - numBlocks / 2) * (scale * 2.0f) + scatter, + (float)(z - numBlocks / 2) * (scale * 3.0f) + scatter + }; + + // Pick a color with a hue depending on cube position for the rainbow color effect + Color cubeColor = ColorFromHSV((Vector3){ (float)(((x + y + z) * 18) % 360), 0.75f, 0.9f }); + + // Calculate cube size + float cubeSize = (2.4f - scale) * blockScale; + + // And finally, draw the cube! + DrawCube(cubePos, cubeSize, cubeSize, cubeSize, cubeColor); + } + } + } + + DrawFPS(10, 10); + + EndMode3D(); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} diff --git a/examples/models/models_waving_cubes.png b/examples/models/models_waving_cubes.png new file mode 100644 index 0000000000000000000000000000000000000000..37a1761ecd05d14fd9f9ce3e351d37027218ef67 GIT binary patch literal 37712 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

FIjYefp(locZW2lknLJNG4l;p4Y= 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