public static Town.Town MakeTown( Coord index, int townOffsetX = 0, // WE USE THESE <---- TO DO THE SUB-TILE RENDER OFFSETS FROM TOWN INFO int townOffsetZ = 0, int seed = 0, int patches = 0) { // Debug.Log("*** REALLY * MAKING A TOWN ***********"); Town.TownOptions opt = new Town.TownOptions(); // TODO. make global Tile size from Terrain opt.mapOffset = new Town.Geom.Vector2(index.x * 1000, index.z * 1000); opt.townOffset = new Town.Geom.Vector2(townOffsetX * 1000, townOffsetZ * 1000); opt.Patches = (patches == 0)? RandomGen.NextValidRandomPatchAmountFromTGOSRange() : patches; opt.Overlay = TownGlobalObjectService.ProduceOverlay; opt.Water = false; // ( RandomGen.Next() % 2 == 0)?true:false; opt.CityDetail = true; opt.Walls = true; opt.Towers = true; // Debug.Log(opt.Patches + " patches requested"); opt.Seed = (seed == 0) ? opt.Seed : seed; opt.coord = index; Town.Town town = new Town.Town(opt); // town.coord = index; // town.Options.coord = index; MeshRenderer = new TownMeshRenderer(town, opt, TownGlobalObjectService.rendererOptions); TownGlobalObject.TownsWaitingToRender.Enqueue(MeshRenderer); TownGlobalObject.TownWaitingToRender = true; //Debug.LogFormat("{0} is {1} for location with {2} of {3} and {4} of {5} for {6} of size {7} ", // nameof(index), // index, // nameof(opt.mapOffset), // opt.mapOffset, // nameof(opt.townOffset), // opt.townOffset, // town.name, // opt.Patches // ); return(town); }
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."); }); }
public static Patch FromPolygon(Town town, Geom.Polygon polygon) { return(new Patch(town, polygon)); }
public static Patch FromRegion(Town town, Region region) { return(new Patch(town, new Geom.Polygon(region.Vertices.Select(vv => vv.C)))); }
private Patch(Town town, Geom.Polygon shape) { Town = town; Shape = shape; Id = ++_id; }
public TownArea(Patch patch) : base(patch) { _town = patch.Town; }