fCraft.MapGenerator.GenerateMap C# (CSharp) Method

GenerateMap() public method

public GenerateMap ( MapGeneratorParameters parameters ) : void
parameters MapGeneratorParameters
return void
        public void GenerateMap(MapGeneratorParameters parameters)
        {
            this.parameters = parameters;
            double[,] heightmap = GenerateHeightmap(map.MapSizeX, map.MapSizeY);
            Feedback("Filling...");
            map.ClearMap();
            double minheight = double.MaxValue;
            for (int x = 0; x < map.MapSizeX; x++)
            {
                for (int y = 0; y < map.MapSizeY; y++)
                {
                    double level = heightmap[x, y];
                    int levelQuantized = (int)(level * map.MapSizeZ);
                    int waterQuantized = (int)(parameters.water * map.MapSizeZ);
                    if (levelQuantized < minheight)
                    {
                        minheight = levelQuantized;
                    }
                    if (level > parameters.water)
                    {
                        level = (level - parameters.water) * parameters.smoothingOver + parameters.water;
                        map.SetBlock(x, y, levelQuantized, data.TileIdGrass);
                        if (!parameters.hollow)
                        {
                            for (int i = levelQuantized - 1; i > 0; i--)
                            {
                                if (levelQuantized - i < 5)
                                {
                                    map.SetBlock(x, y, i, data.TileIdDirt);
                                }
                                else
                                {
                                    map.SetBlock(x, y, i, data.TileIdStone);
                                }
                            }
                        }
                    }
                    else
                    {
                        level = (level - parameters.water) * parameters.smoothingUnder + parameters.water;

                        map.SetBlock(x, y, waterQuantized, data.TileIdWater);
                        if (!parameters.hollow)
                        {
                            for (int i = waterQuantized - 1; i >= levelQuantized; i--)
                            {
                                map.SetBlock(x, y, i, data.TileIdWater);
                            }
                        }
                        map.SetBlock(x, y, levelQuantized, data.TileIdSand);
                        if (!parameters.hollow)
                        {
                            for (int i = levelQuantized - 1; i > 0; i--)
                            {
                                map.SetBlock(x, y, i, data.TileIdStone);
                            }
                        }
                    }
                }
            }
            //map.MakeFloodBarrier();
            //map.Save(filename);
            Feedback("Done.");
        }