Dwarrowdelf.TerrainGen.RiverGen.AdjustRiver C# (CSharp) Method

AdjustRiver() public method

public AdjustRiver ( ) : void
return void
        public void AdjustRiver()
        {
            int minZ = m_riverPath.Min(p => m_terrain.GetSurfaceLevel(p));

            var pos = DirectionSet.Cardinal | DirectionSet.Exact;

            var coreLocs = new HashSet<IntVector2>(m_riverPath.SelectMany(p => pos.ToSurroundingPoints(p)));

            foreach (var pp in coreLocs)
            {
                if (m_terrain.Size.Plane.Contains(pp) == false)
                    continue;

                for (int z = m_terrain.Depth - 1; z >= minZ - 1; --z)
                {
                    var p = new IntVector3(pp.X, pp.Y, z);

                    var td = TileData.EmptyTileData;

                    if (z == minZ - 1)
                        td.WaterLevel = TileData.MaxWaterLevel;

                    m_terrain.SetTileData(p, td);
                }
            }
        }

Usage Example

Beispiel #1
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);
        }
All Usage Examples Of Dwarrowdelf.TerrainGen.RiverGen::AdjustRiver