Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
		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();
		}