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; }
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(); } }