예제 #1
0
    public TerrainData Generate(int seed)
    {
        System.Random rng = new System.Random(seed);
        TerrainData data = new TerrainData(m_width, m_height);

        _generateNoise(rng, data);
        _circleCull(data);
        _smoothMap(rng, data);
        _findAreas(data);
        _removeSmallAreas(data);
        _placeTerrainObjects(data.GetArea(0), rng);

        return data;
    }
예제 #2
0
    private void _removeSmallAreas(TerrainData data)
    {
        Area[] areas = new Area[data.GetAreaCount()];

        for (int i = 0; i < data.GetAreaCount(); i++)
        {
            areas[i] = data.GetArea(i);
        }

        IEnumerable<Section> removedSections = areas.OfType<Section>().OrderByDescending(section => section.GetPointCount()).Skip(1);
        foreach (Section section in removedSections)
        {
            section.Obliterate();
        }
    }