| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -5,7 +5,9 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   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) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   Example contributed by Codecat (@codecat) and reviewed by Ramon Santamaria (@raysan5) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			*   Copyright (c) 2019 Codecat (@codecat) and Ramon Santamaria (@raysan5) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			* | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			********************************************************************************************/ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -23,7 +25,7 @@ int main() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    InitWindow(screenWidth, screenHeight, "raylib [models] example - waving cubes"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Initialize the camera | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    Camera3D camera; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    Camera3D camera = { 0 }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    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 }; | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -40,16 +42,18 @@ int main() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    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; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        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; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        double cameraTime = time*0.3; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        camera.position.x = (float)cos(cameraTime)*40.0f; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        camera.position.z = (float)sin(cameraTime)*40.0f; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        //---------------------------------------------------------------------------------- | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			         | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        // Draw | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        //---------------------------------------------------------------------------------- | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        BeginDrawing(); | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -60,37 +64,40 @@ int main() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                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++) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                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; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                            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)); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                            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 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                                (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 }); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                            Color cubeColor = ColorFromHSV((Vector3){ (float)(((x + y + z)*18)%360), 0.75f, 0.9f }); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                            // Calculate cube size | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                            float cubeSize = (2.4f - scale) * blockScale; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                            float cubeSize = (2.4f - scale)*blockScale; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                            // And finally, draw the cube! | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                            DrawCube(cubePos, cubeSize, cubeSize, cubeSize, cubeColor); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            DrawFPS(10, 10); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            EndMode3D(); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			             | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            DrawFPS(10, 10); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        EndDrawing(); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        //---------------------------------------------------------------------------------- | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |