Dwarrowdelf.TerrainGen.TerrainData.RescanLevelMap C# (CSharp) Method

RescanLevelMap() public method

public RescanLevelMap ( ) : void
return void
        public void RescanLevelMap()
        {
            var levelMap = m_levelMap;

            Parallel.ForEach(this.Size.Plane.Range(), p =>
            {
                for (int z = this.Size.Depth - 1; z >= 0; --z)
                {
                    if (GetTileData(p.X, p.Y, z).IsWall)
                    {
                        levelMap[p.Y, p.X] = (byte)(z + 1);
                        break;
                    }
                }
            });
        }

Usage Example

Example #1
0
        public static TerrainData CreateBallMap(IntSize3 size, int innerSide = 0)
        {
            var map = new TerrainData(size);

            int side = MyMath.Min(size.Width, size.Height, size.Depth);

            int r  = side / 2 - 1;
            int ir = innerSide / 2 - 1;

            Parallel.For(0, size.Depth, z =>
            {
                for (int y = 0; y < size.Height; ++y)
                {
                    for (int x = 0; x < size.Width; ++x)
                    {
                        var pr = Math.Sqrt((x - r) * (x - r) + (y - r) * (y - r) + (z - r) * (z - r));

                        var p = new IntVector3(x, y, z);

                        if (pr < r && pr >= ir)
                        {
                            map.SetTileDataNoHeight(p, TileData.GetNaturalWall(MaterialID.Granite));
                        }
                        else
                        {
                            map.SetTileDataNoHeight(p, TileData.EmptyTileData);
                        }
                    }
                }
            });

            map.RescanLevelMap();

            return(map);
        }
All Usage Examples Of Dwarrowdelf.TerrainGen.TerrainData::RescanLevelMap