コード例 #1
0
ファイル: Main.cs プロジェクト: sp-alex-osou/TerrainLOD
        private void InitializeTerrain(TerrainType type)
        {
            terrain = TerrainFactory.GetTerrain(type, this);

            terrain.LoadHeightmap(Settings.Default.Heightmap);
            terrain.LoadTexture(Settings.Default.Texture);

            terrain.Bumpiness             = Settings.Default.Bumpiness;
            terrain.FrustumCullingEnabled = Settings.Default.FrustumCullingEnabled;
            terrain.BruteForceEnabled     = Settings.Default.BruteForceEnabled;
            terrain.TextureEnabled        = Settings.Default.TextureEnabled;
            terrain.TextureResolution     = Settings.Default.TextureResolution;
            terrain.HeightmapEnabled      = Settings.Default.HeightmapEnabled;
            terrain.GeomorphEnabled       = Settings.Default.GeomorphEnabled;
            terrain.LightEnabled          = Settings.Default.LightEnabled;
            terrain.LightDiffuse          = Settings.Default.LightDiffuse;
            terrain.LightDirection        = Settings.Default.LightDirection;
            terrain.LightAmbient          = Settings.Default.LightAmbient;
            terrain.LightSpecular         = Settings.Default.LightSpecular;
            terrain.LightShininess        = Settings.Default.LightShininess;
            terrain.Quality      = Settings.Default.Quality;
            terrain.TerrainColor = Settings.Default.TerrainColor;
            terrain.BlockSize    = Settings.Default.BlockSize;
            terrain.MinQuality   = Settings.Default.MinQuality;

            terrain.Initialize();
        }
コード例 #2
0
ファイル: Main.cs プロジェクト: sp-alex-osou/TerrainLOD
        private void InitializeTerrain(TerrainType type)
        {
            terrain = TerrainFactory.GetTerrain(type, this);

            terrain.LoadHeightmap(Settings.Default.Heightmap);
            terrain.LoadTexture(Settings.Default.Texture);

            terrain.Bumpiness = Settings.Default.Bumpiness;
            terrain.FrustumCullingEnabled = Settings.Default.FrustumCullingEnabled;
            terrain.BruteForceEnabled = Settings.Default.BruteForceEnabled;
            terrain.TextureEnabled = Settings.Default.TextureEnabled;
            terrain.TextureResolution = Settings.Default.TextureResolution;
            terrain.HeightmapEnabled = Settings.Default.HeightmapEnabled;
            terrain.GeomorphEnabled = Settings.Default.GeomorphEnabled;
            terrain.LightEnabled = Settings.Default.LightEnabled;
            terrain.LightDiffuse = Settings.Default.LightDiffuse;
            terrain.LightDirection = Settings.Default.LightDirection;
            terrain.LightAmbient = Settings.Default.LightAmbient;
            terrain.LightSpecular = Settings.Default.LightSpecular;
            terrain.LightShininess = Settings.Default.LightShininess;
            terrain.Quality = Settings.Default.Quality;
            terrain.TerrainColor = Settings.Default.TerrainColor;
            terrain.BlockSize = Settings.Default.BlockSize;
            terrain.MinQuality = Settings.Default.MinQuality;

            terrain.Initialize();
        }
コード例 #3
0
ファイル: Main.cs プロジェクト: sp-alex-osou/TerrainLOD
        protected override void Update(GameTime gameTime)
        {
            keyboardState = Keyboard.GetState();

            if (keyboardState.IsKeyDown(Keys.Escape))
            {
                this.Exit();
            }

            if (IsKeyTyped(Keys.F1))
            {
                ChangeTerrain(TerrainType.Quadtree);
            }

            if (IsKeyTyped(Keys.F2))
            {
                ChangeTerrain(TerrainType.GeoMipMap);
            }

            if (IsKeyTyped(Keys.F3))
            {
                ChangeTerrain(TerrainType.ROAM);
            }

            if (IsKeyTyped(Keys.D0))
            {
                ToggleFullscreen();
            }

            if (IsKeyTyped(Keys.Tab))
            {
                ToggleFillMode();
            }

            if (IsKeyTyped(Keys.G))
            {
                terrain.GeomorphEnabled = !terrain.GeomorphEnabled;
            }

            if (IsKeyTyped(Keys.H))
            {
                terrain.HeightmapEnabled = !terrain.HeightmapEnabled;
            }

            if (IsKeyTyped(Keys.T))
            {
                terrain.TextureEnabled = !terrain.TextureEnabled;
            }

            if (IsKeyTyped(Keys.L))
            {
                terrain.LightEnabled = !terrain.LightEnabled;
            }

            if (IsKeyTyped(Keys.B))
            {
                terrain.BruteForceEnabled = !terrain.BruteForceEnabled;
            }

            if (IsKeyTyped(Keys.F))
            {
                terrain.FrustumCullingEnabled = !terrain.FrustumCullingEnabled;
            }

            if (IsKeyTyped(Keys.O))
            {
                fakeCamera = !fakeCamera;
            }

            if (IsKeyTyped(Keys.C))
            {
                GC.Collect();
            }

            if (IsKeyTyped(Keys.I))
            {
                hud.Visible = !hud.Visible;
            }

            if (IsKeyTyped(Keys.D1))
            {
                terrain.LoadHeightmap("Heightmaps/Heightmap1");
            }

            if (IsKeyTyped(Keys.D2))
            {
                terrain.LoadHeightmap("Heightmaps/Heightmap2");
            }

            if (IsKeyTyped(Keys.D3))
            {
                terrain.LoadHeightmap("Heightmaps/Heightmap3");
            }

            if (IsKeyTyped(Keys.D4))
            {
                terrain.LoadHeightmap("Heightmaps/Heightmap4");
            }

            if (IsKeyTyped(Keys.D5))
            {
                terrain.LoadHeightmap("Heightmaps/PugetSound");
                terrain.LoadTexture("Textures/PugetSound");
                terrain.TextureResolution = 1;
                terrain.Bumpiness         = 100;
            }

            if (IsKeyTyped(Keys.D6))
            {
                terrain.LoadTexture("Textures/Rock");
            }

            if (IsKeyTyped(Keys.D7))
            {
                terrain.LoadTexture("Textures/Sand");
            }

            if (IsKeyTyped(Keys.D8))
            {
                terrain.LoadTexture("Textures/Desert");
            }

            if (IsKeyTyped(Keys.D9))
            {
                terrain.LoadTexture("Textures/Grass");
            }

            if (IsKeyTyped(Keys.F10))
            {
                terrain.Bumpiness += 10.0f;
            }

            if (IsKeyTyped(Keys.F9))
            {
                terrain.Bumpiness -= 10.0f;
            }

            if (IsKeyTyped(Keys.F12))
            {
                terrain.TextureResolution *= 2.0f;
            }

            if (IsKeyTyped(Keys.F11))
            {
                terrain.TextureResolution *= 0.5f;
            }

            if (IsKeyTyped(Keys.OemPlus))
            {
                terrain.Quality *= 2.0f;
            }

            if (IsKeyTyped(Keys.OemMinus))
            {
                terrain.Quality /= 2.0f;
            }

            previousKeyboardState = keyboardState;

            base.Update(gameTime);

            if (!fakeCamera)
            {
                fakeCameraPosition     = camera.Position;
                fakeViewFrustum.Matrix = camera.ViewFrustum.Matrix;
            }

            terrain.ViewFrustum    = fakeViewFrustum;
            terrain.CameraPosition = fakeCameraPosition;

            terrain.Update(gameTime);

            hud.FPS       = (int)Math.Round(fps.FrameRate);
            hud.Size      = terrain.Size;
            hud.Quality   = terrain.Quality;
            hud.DrawCalls = terrain.DrawCalls;
            hud.Triangles = terrain.Triangles;
            hud.Bumpiness = terrain.Bumpiness;

            switch (terrain.GetTerrainType())
            {
            case TerrainType.Basic: hud.Method = "Basic"; break;

            case TerrainType.GeoMipMap: hud.Method = "GeoMipMap"; break;

            case TerrainType.Quadtree: hud.Method = "Roettger"; break;

            case TerrainType.ROAM: hud.Method = "ROAM"; break;
            }
        }