void SmoothEdges() {
Map newMap = new Map( null, map.Width, map.Length, map.Height, false ) {Blocks = (byte[])map.Blocks.Clone()};
for( int x = 1; x < genParams.MapWidth - 1; x++ ) {
for( int y = 1; y < genParams.MapLength - 1; y++ ) {
for( int z = 1; z < genParams.MapHeight - 1; z++ ) {
int sum = (map.GetBlock( x - 1, y, z ) != Block.Air ? 1 : 0) +
(map.GetBlock( x + 1, y, z ) != Block.Air ? 1 : 0) +
(map.GetBlock( x, y - 1, z ) != Block.Air ? 1 : 0) +
(map.GetBlock( x, y + 1, z ) != Block.Air ? 1 : 0) +
(map.GetBlock( x, y, z - 1 ) != Block.Air ? 1 : 0) +
(map.GetBlock( x, y, z + 1 ) != Block.Air ? 1 : 0);
if( map.GetBlock( x, y, z ) != Block.Air ) {
newMap.SetBlock( x, y, z, Block.White );
} else if( sum > 1 && map.GetBlock( x, y, z - 1 ) != Block.Air ) {
newMap.SetBlock( x, y, z, Block.Blue );
}
}
}
}
map = newMap;
}