public void Generate() { Clear(); Profiler.BeginSample("TownGenerator"); var town = new Town.Town(townOptions); var renderer = new TownMeshRenderer(town, townOptions, rendererOptions); renderer.Generate(); Profiler.EndSample(); }
public void Generate() { for (int i = TownRoot.childCount - 1; i > -1; i--) { DestroyImmediate(TownRoot.GetChild(i).gameObject); } var townOptions = new TownOptions { Overlay = true, Patches = Patches, Walls = Walls, Water = Water, Seed = Seed }; var town = new Town.Town(townOptions); var townRenderer = new TownMeshRenderer(town, townOptions); townRenderer.root = TownRoot; townRenderer.GateMaterial = GateMaterial; townRenderer.TowerMaterial = TowerMaterial; townRenderer.WallMaterial = WallMaterial; townRenderer.RoadMaterial = RoadMaterial; townRenderer.WaterMaterial = WaterMaterial; townRenderer.BuildingMaterial = BuildingMaterial; townRenderer.OverlayMaterial = OverlayMaterial; townRenderer.Generate(); if (townRenderer.Walls != null) { foreach (Transform child in townRenderer.Walls.transform) { var modifier = child.gameObject.AddComponent <NavMeshModifier> (); modifier.overrideArea = true; modifier.area = 6; } } if (townRenderer.Waters != null) { foreach (Transform child in townRenderer.Waters.transform) { var modifier = child.gameObject.AddComponent <NavMeshModifier> (); modifier.overrideArea = true; modifier.area = 5; } } foreach (Transform child in townRenderer.Roads.transform) { var modifier = child.gameObject.AddComponent <NavMeshModifier> (); modifier.overrideArea = true; modifier.area = 3; } foreach (Transform child in townRenderer.Buildings.transform) { var modifier = child.gameObject.AddComponent <NavMeshModifier> (); modifier.overrideArea = true; modifier.area = 4; child.gameObject.AddComponent <Building> (); } GetComponent <BuildNavMesh> ().Build((AsyncOperation operation) => { NavMeshQuerySystem.PurgeCacheStatic(); Debug.Log("Town built. Cache purged."); }); }