Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
//----------------------------------------------------------------------------------
r.UpdateCamera(camera); // Update camera
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
r.BeginDrawing();
r.ClearBackground(r.RAYWHITE);
r.BeginMode3D(camera);
r.DrawPlane(r.Vector3(), r.Vector2(32, 32), r.LIGHTGRAY); // Draw ground
r.DrawCube(r.Vector3(-16, 2.5, 0), 1, 5, 32, r.BLUE); // Draw a blue wall
r.DrawCube(r.Vector3(16, 2.5, 0), 1, 5, 32, r.LIME); // Draw a green wall
r.DrawCube(r.Vector3(0, 2.5, 16), 32, 5, 1, r.GOLD); // Draw a yellow wall
// Draw some cubes around
for (let i = 0; i < MAX_COLUMNS; i++)
{
r.DrawCube(positions[i], 2, heights[i], 2, colors[i]);
r.DrawCubeWires(positions[i], 2, heights[i], 2, r.MAROON);
}
r.EndMode3D();
r.DrawRectangle( 10, 10, 220, 70, r.Fade(r.SKYBLUE, 0.5));
r.DrawRectangleLines( 10, 10, 220, 70, r.BLUE);
r.DrawText("First person camera default controls:", 20, 20, 10, r.BLACK);
r.DrawText("- Move with keys: W, A, S, D", 40, 40, 10, r.DARKGRAY);
r.DrawText("- Mouse move to look around", 40, 60, 10, r.DARKGRAY);
// Update
//----------------------------------------------------------------------------------
r.UpdateCamera(camera); // Update camera
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
r.BeginDrawing();
r.ClearBackground(r.RAYWHITE);
r.BeginMode3D(camera);
r.DrawPlane(r.Vector3(), r.Vector2(32, 32), r.LIGHTGRAY); // Draw ground
r.DrawCube(r.Vector3(-16, 2.5, 0), 1, 5, 32, r.BLUE); // Draw a blue wall
r.DrawCube(r.Vector3(16, 2.5, 0), 1, 5, 32, r.LIME); // Draw a green wall
r.DrawCube(r.Vector3(0, 2.5, 16), 32, 5, 1, r.GOLD); // Draw a yellow wall
// Draw some cubes around
for (let i = 0; i < MAX_COLUMNS; i++)
{
r.DrawCube(positions[i], 2, heights[i], 2, colors[i]);
r.DrawCubeWires(positions[i], 2, heights[i], 2, r.MAROON);
}
r.EndMode3D();
r.DrawRectangle( 10, 10, 220, 70, r.Fade(r.SKYBLUE, 0.5));
r.DrawRectangleLines( 10, 10, 220, 70, r.BLUE);
r.DrawText("First person camera default controls:", 20, 20, 10, r.BLACK);
r.DrawText("- Move with keys: W, A, S, D", 40, 40, 10, r.DARKGRAY);
r.UpdateCamera(camera); // Update camera
// Calculate cube screen space position (with a little offset to be in top)
const cubePositionVector = r.Vector3(cubePosition.x, cubePosition.y + 2.5, cubePosition.z)
cubeScreenPosition = r.GetWorldToScreen(cubePositionVector, camera)
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
r.BeginDrawing()
r.ClearBackground(r.RAYWHITE)
r.BeginMode3D(camera)
r.DrawCube(cubePosition, 2, 2, 2, r.RED);
r.DrawCubeWires(cubePosition, 2, 2, 2, r.MAROON);
r.DrawGrid(10, 1);
r.EndMode3D();
r.DrawText("Enemy: 100 / 100", cubeScreenPosition.x - r.MeasureText("Enemy: 100 / 100", 20) / 2, cubeScreenPosition.y, 20, r.BLACK);
r.DrawText("Text is always on top of the cube", (screenWidth - r.MeasureText("Text is always on top of the cube", 20)) / 2, 25, 20, r.GRAY);
r.EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
r.CloseWindow(); // Close window and OpenGL context
{
// Update
//----------------------------------------------------------------------------------
r.UpdateCamera(camera); // Update camera
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
r.BeginDrawing();
r.ClearBackground(r.RAYWHITE);
r.BeginMode3D(camera);
r.DrawPlane(r.Vector3(), r.Vector2(32, 32), r.LIGHTGRAY); // Draw ground
r.DrawCube(r.Vector3(-16, 2.5, 0), 1, 5, 32, r.BLUE); // Draw a blue wall
r.DrawCube(r.Vector3(16, 2.5, 0), 1, 5, 32, r.LIME); // Draw a green wall
r.DrawCube(r.Vector3(0, 2.5, 16), 32, 5, 1, r.GOLD); // Draw a yellow wall
// Draw some cubes around
for (let i = 0; i < MAX_COLUMNS; i++)
{
r.DrawCube(positions[i], 2, heights[i], 2, colors[i]);
r.DrawCubeWires(positions[i], 2, heights[i], 2, r.MAROON);
}
r.EndMode3D();
r.DrawRectangle( 10, 10, 220, 70, r.Fade(r.SKYBLUE, 0.5));
r.DrawRectangleLines( 10, 10, 220, 70, r.BLUE);
r.DrawText("First person camera default controls:", 20, 20, 10, r.BLACK);
//----------------------------------------------------------------------------------
r.BeginDrawing();
r.ClearBackground(r.RAYWHITE);
r.BeginMode3D(camera);
r.DrawPlane(r.Vector3(), r.Vector2(32, 32), r.LIGHTGRAY); // Draw ground
r.DrawCube(r.Vector3(-16, 2.5, 0), 1, 5, 32, r.BLUE); // Draw a blue wall
r.DrawCube(r.Vector3(16, 2.5, 0), 1, 5, 32, r.LIME); // Draw a green wall
r.DrawCube(r.Vector3(0, 2.5, 16), 32, 5, 1, r.GOLD); // Draw a yellow wall
// Draw some cubes around
for (let i = 0; i < MAX_COLUMNS; i++)
{
r.DrawCube(positions[i], 2, heights[i], 2, colors[i]);
r.DrawCubeWires(positions[i], 2, heights[i], 2, r.MAROON);
}
r.EndMode3D();
r.DrawRectangle( 10, 10, 220, 70, r.Fade(r.SKYBLUE, 0.5));
r.DrawRectangleLines( 10, 10, 220, 70, r.BLUE);
r.DrawText("First person camera default controls:", 20, 20, 10, r.BLACK);
r.DrawText("- Move with keys: W, A, S, D", 40, 40, 10, r.DARKGRAY);
r.DrawText("- Mouse move to look around", 40, 60, 10, r.DARKGRAY);
r.EndDrawing();
//----------------------------------------------------------------------------------
}