public void BuildPlates() { this.Plates = new TectonicPlate[this.PlateCount]; this.HexplanetTiles = new Dictionary <int, Tile>(); List <Tile> tiles = this.HexPlanet.GetTiles(); for (int i = 0; i < this.Plates.Length; i++) { int randomIndex = Random.Range(0, tiles.Count); Tile randomTile = tiles[randomIndex]; GameObject go = new GameObject("Plate" + i); go.transform.position = randomTile.center; go.transform.rotation = randomTile.transform.rotation; go.transform.SetParent(this.HexPlanet.transform); this.Plates[i] = go.AddComponent <TectonicPlate>(); bool isWater = TerrainGenerator.EvalPercentChance(this.ChanceOfWaterPlate); float extrusion = isWater ? (this.SeaLevel / 2.0f) : Random.Range(this.GetMinLandExtude(), this.MaxPlateExtrusion); TerrainElevation elevation = this.GetElevation(extrusion); Color color = (elevation != null) ? elevation.TerrainColor : Color.black; this.Plates[i].PlateSetup(this.HexPlanet, tiles[randomIndex], isWater, extrusion * this.ExtrusionMultiplier, color, this.HexplanetTiles); } int maxLoop = 100; for (int i = 0; i < maxLoop; i++) { bool addedAny = false; for (int j = 0; j < this.Plates.Length; j++) { bool added = this.Plates[j].Fill(this.HexplanetTiles, this.ChanceOfFillRequeue); if (added) { addedAny = true; } } if (!addedAny) { Debug.Log("Stopped adding at i=" + i); break; } } for (int j = 0; j < this.Plates.Length; j++) { this.Plates[j].SetupTileInfo(); } Debug.Log("Stopped HexplanetUsedTiles " + this.HexplanetTiles.Count + " / " + tiles.Count); }
public TerrainElevation GetElevation(float extrusion) { for (int i = 0; i < this.Elevations.Length; i++) { TerrainElevation e = this.Elevations[i]; if (e.IsExtrusionMatch(extrusion)) { return(e); } } return(null); }
public void AssignTerrainTypes() { for (int i = 0; i < this.Plates.Length; i++) { TectonicPlate plate = this.Plates[i]; for (int j = 0; j < plate.Tiles.Count; j++) { Tile t = plate.Tiles[j]; TerrainElevation elevation = this.GetElevation(t.amountExtruded); Color color = (elevation != null) ? elevation.TerrainColor : Color.black; t.setColor(color); } } }