static void Main() { DriverType?driverType = AskForDriver(); if (!driverType.HasValue) { return; } IrrlichtDevice device = IrrlichtDevice.CreateDevice(driverType.Value, new Dimension2Di(800, 600)); if (device == null) { return; } device.OnEvent += new IrrlichtDevice.EventHandler(device_OnEvent); device.SetWindowCaption("Mesh handling - Irrlicht Engine - press [1], [2], [3] to regenerate mesh"); VideoDriver driver = device.VideoDriver; SceneManager scene = device.SceneManager; // Generate starting height map and mesh HeightMap map = new HeightMap(255, 255); map.Generate(HeightMap.HeightFunc.EggBox); HeightMesh mesh = new HeightMesh(); mesh.Init(driver, map, 50.0f, HeightMesh.ColorFunc.GreyscaleBasedOnTheHeight); // Add the mesh to the scene graph MeshSceneNode meshnode = scene.AddMeshSceneNode(mesh.Mesh); meshnode.SetMaterialFlag(MaterialFlag.BackFaceCulling, false); // Add light (just for nice effects) LightSceneNode lightnode = scene.AddLightSceneNode(null, new Vector3Df(0, 100, 0), new Colorf(1, 1, 1), 500.0f); SceneNodeAnimator anim = scene.CreateFlyCircleAnimator(new Vector3Df(0, 150, 0), 250.0f); lightnode.AddAnimator(anim); anim.Drop(); // Add camera CameraSceneNode camera = scene.AddCameraSceneNodeFPS(); camera.Position = new Vector3Df(-20.0f, 100.0f, -20.0f); camera.Target = new Vector3Df(200.0f, -100.0f, 200.0f); camera.FarValue = 20000.0f; // Main loop while (device.Run()) { if (!device.WindowActive) { device.Sleep(100); continue; } if (IsKeyDown(KeyCode.KeyW)) { meshnode.SetMaterialFlag(MaterialFlag.Wireframe, !meshnode.GetMaterial(0).Wireframe); } else if (IsKeyDown(KeyCode.Key1)) { map.Generate(HeightMap.HeightFunc.EggBox); mesh.Init(driver, map, 50.0f, HeightMesh.ColorFunc.GreyscaleBasedOnTheHeight); } else if (IsKeyDown(KeyCode.Key2)) { map.Generate(HeightMap.HeightFunc.MoreSine); mesh.Init(driver, map, 50.0f, HeightMesh.ColorFunc.CoordinateInterpolation); } else if (IsKeyDown(KeyCode.Key3)) { map.Generate(HeightMap.HeightFunc.JustExp); mesh.Init(driver, map, 50.0f, HeightMesh.ColorFunc.CoordinateInterpolation); } driver.BeginScene(); scene.DrawAll(); driver.EndScene(); } // Clean up mesh.Drop(); device.Drop(); }
static void Main(string[] args) { DriverType driverType; if (!AskUserForDriver(out driverType)) return; IrrlichtDevice device = IrrlichtDevice.CreateDevice(driverType, new Dimension2Di(800, 600)); if (device == null) return; device.OnEvent += new IrrlichtDevice.EventHandler(device_OnEvent); device.SetWindowCaption("Mesh handling - Irrlicht Lime"); VideoDriver driver = device.VideoDriver; SceneManager scene = device.SceneManager; // Generate starting height map and mesh HeightMap map = new HeightMap(255, 255); map.Generate(HeightMap.HeightFunc.EggBox); HeightMesh mesh = new HeightMesh(); mesh.Init(driver, map, 50.0f, HeightMesh.ColorFunc.GreyscaleBasedOnTheHeight); // Add the mesh to the scene graph MeshSceneNode meshnode = scene.AddMeshSceneNode(mesh.Mesh); meshnode.SetMaterialFlag(MaterialFlag.BackFaceCulling, false); // Add light (just for nice effects) LightSceneNode lightnode = scene.AddLightSceneNode(null, new Vector3Df(0, 100, 0), new Colorf(1, 1, 1), 500.0f); SceneNodeAnimator anim = scene.CreateFlyCircleAnimator(new Vector3Df(0, 150, 0), 250.0f); lightnode.AddAnimator(anim); anim.Drop(); // Add camera CameraSceneNode camera = scene.AddCameraSceneNodeFPS(); camera.Position = new Vector3Df(-20.0f, 100.0f, -20.0f); camera.Target = new Vector3Df(200.0f, -100.0f, 200.0f); camera.FarValue = 20000.0f; // Main loop while (device.Run()) { if (!device.WindowActive) { device.Sleep(100); continue; } if (IsKeyDown(KeyCode.KeyW)) { meshnode.SetMaterialFlag(MaterialFlag.Wireframe, !meshnode.GetMaterial(0).Wireframe); } else if (IsKeyDown(KeyCode.Key1)) { map.Generate(HeightMap.HeightFunc.EggBox); mesh.Init(driver, map, 50.0f, HeightMesh.ColorFunc.GreyscaleBasedOnTheHeight); } else if (IsKeyDown(KeyCode.Key2)) { map.Generate(HeightMap.HeightFunc.MoreSine); mesh.Init(driver, map, 50.0f, HeightMesh.ColorFunc.CoordinateInterpolation); } else if (IsKeyDown(KeyCode.Key3)) { map.Generate(HeightMap.HeightFunc.JustExp); mesh.Init(driver, map, 50.0f, HeightMesh.ColorFunc.CoordinateInterpolation); } driver.BeginScene(); scene.DrawAll(); driver.EndScene(); } // Clean up mesh.Drop(); device.Drop(); }