public static TerrainData CreateNoiseTerrain(IntSize3 size, Random random)
        {
            var terrain = new TerrainData(size);

            var noise    = CreateTerrainNoise();
            var noisemap = CreateTerrainNoiseMap(noise, new IntSize2(size.Width, size.Height));

            FillFromNoiseMap(terrain, noisemap);

            terrain.RescanLevelMap();

            double xk = (random.NextDouble() * 2 - 1) * 0.01;
            double yk = (random.NextDouble() * 2 - 1) * 0.01;

            TerrainHelpers.CreateBaseMinerals(terrain, random, xk, yk);

            TerrainHelpers.CreateOreVeins(terrain, random, xk, yk);

            TerrainHelpers.CreateOreClusters(terrain, random);

            RiverGen.Generate(terrain, random);

            int soilLimit = size.Depth * 4 / 5;

            TerrainHelpers.CreateSoil(terrain, soilLimit);

            int grassLimit = terrain.Depth * 4 / 5;

            TerrainHelpers.CreateVegetation(terrain, random, grassLimit);

            return(terrain);
        }
Beispiel #2
0
        public void Generate(DiamondSquare.CornerData corners, double range, double h, double amplify)
        {
            GenerateHeightMap(corners, range, h, amplify);

            FillMap();

            var random  = m_random;
            var terrain = m_data;

            double xk = (random.NextDouble() * 2 - 1) * 0.01;
            double yk = (random.NextDouble() * 2 - 1) * 0.01;

            TerrainHelpers.CreateBaseMinerals(terrain, random, xk, yk);

            TerrainHelpers.CreateOreVeins(terrain, random, xk, yk);

            TerrainHelpers.CreateOreClusters(terrain, random);

            if (m_data.Width > 128)
            {
                var riverGen = new RiverGen(m_data, m_random);
                if (riverGen.CreateRiverPath())
                {
                    riverGen.AdjustRiver();
                }
                else
                {
                    Trace.TraceError("Failed to create river");
                }
            }

            int soilLimit = m_size.Depth * 4 / 5;

            TerrainHelpers.CreateSoil(m_data, soilLimit);
        }
Beispiel #3
0
        public void Generate(DiamondSquare.CornerData corners, double range, double h, double amplify)
        {
            GenerateHeightMap(corners, range, h, amplify);

            FillMap();

            var random = m_random;
            var terrain = m_data;

            double xk = (random.NextDouble() * 2 - 1) * 0.01;
            double yk = (random.NextDouble() * 2 - 1) * 0.01;
            TerrainHelpers.CreateBaseMinerals(terrain, random, xk, yk);

            TerrainHelpers.CreateOreVeins(terrain, random, xk, yk);

            TerrainHelpers.CreateOreClusters(terrain, random);

            if (m_data.Width > 128)
            {
                var riverGen = new RiverGen(m_data, m_random);
                if (riverGen.CreateRiverPath())
                {
                    riverGen.AdjustRiver();
                }
                else
                {
                    Trace.TraceError("Failed to create river");
                }
            }

            int soilLimit = m_size.Depth * 4 / 5;
            TerrainHelpers.CreateSoil(m_data, soilLimit);
        }
Beispiel #4
0
 public static void Generate(TerrainData terrain, Random random)
 {
     var riverGen = new RiverGen(terrain, random);
     if (riverGen.CreateRiverPath())
     {
         riverGen.AdjustRiver();
     }
     else
     {
         Trace.TraceError("Failed to create river");
     }
 }
Beispiel #5
0
        public static void Generate(TerrainData terrain, Random random)
        {
            var riverGen = new RiverGen(terrain, random);

            if (riverGen.CreateRiverPath())
            {
                riverGen.AdjustRiver();
            }
            else
            {
                Trace.TraceError("Failed to create river");
            }
        }