/******************************************************************************************* * * raylib [models] example - Heightmap loading and drawing * * This example has been created using raylib 1.8 (www.raylib.com) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * * Copyright (c) 2015 Ramon Santamaria (@raysan5) * ********************************************************************************************/ using System.Numerics; using static Raylib_cs.Raylib; namespace Examples.Models; public class HeightmapDemo { public static int Main() { // Initialization //-------------------------------------------------------------------------------------- const int screenWidth = 800; const int screenHeight = 450; InitWindow(screenWidth, screenHeight, "raylib [models] example - heightmap loading and drawing"); // Define our custom camera to look into our 3d world Camera3D camera = new(); camera.Position = new Vector3(18.0f, 16.0f, 18.0f); camera.Target = new Vector3(0.0f, 0.0f, 0.0f); camera.Up = new Vector3(0.0f, 1.0f, 0.0f); camera.FovY = 45.0f; camera.Projection = CameraProjection.Perspective; Image image = LoadImage("resources/heightmap.png"); Texture2D texture = LoadTextureFromImage(image); Mesh mesh = GenMeshHeightmap(image, new Vector3(16, 8, 16)); Model model = LoadModelFromMesh(mesh); // Set map diffuse texture Raylib.SetMaterialTexture(ref model, 0, MaterialMapIndex.Albedo, ref texture); Vector3 mapPosition = new(-8.0f, 0.0f, -8.0f); UnloadImage(image); SetTargetFPS(60); //-------------------------------------------------------------------------------------- // Main game loop while (!WindowShouldClose()) { // Update //---------------------------------------------------------------------------------- UpdateCamera(ref camera, CameraMode.Orbital); //---------------------------------------------------------------------------------- // Draw //---------------------------------------------------------------------------------- BeginDrawing(); ClearBackground(Color.RayWhite); BeginMode3D(camera); DrawModel(model, mapPosition, 1.0f, Color.Red); DrawGrid(20, 1.0f); EndMode3D(); DrawTexture(texture, screenWidth - texture.Width - 20, 20, Color.White); DrawRectangleLines(screenWidth - texture.Width - 20, 20, texture.Width, texture.Height, Color.Green); DrawFPS(10, 10); EndDrawing(); //---------------------------------------------------------------------------------- } // De-Initialization //-------------------------------------------------------------------------------------- UnloadTexture(texture); UnloadModel(model); CloseWindow(); //-------------------------------------------------------------------------------------- return 0; } }