public void GenerateMap() { ClearMap(); tilemapScale = GameObject.FindGameObjectWithTag(Tags.TerrainTilemap).transform.localScale; tileHeight = Vector3.Distance( tilemap.CellToWorld(HexTools.GetAdjacentTileOffset(Vector3Int.zero, Cardinality.N)), tilemap.CellToWorld(new Vector3Int(0, 0, 0))); float diagonalDist = Vector3.Distance( tilemap.CellToWorld(Vector3Int.zero), tilemap.CellToWorld(HexTools.GetAdjacentTileOffset(Vector3Int.zero, Cardinality.NE))); tileWidth = Mathf.Sqrt(diagonalDist * diagonalDist - Mathf.Pow(tileHeight * .5f, 2)) * 4 / 3; tileDefinitions.terrainData.Sort(); var regionDict = StageOne.RunGeneration(this); StageTwo.RunGeneration(this, regionDict); //if (useNoise) // FillMapArea(Vector3Int.zero, initialViewRadius); //else // RandomFillMap(); //for (int i = 0; i < smoothSteps; ++i) //{ // if (!SmoothMap(Vector3Int.zero)) // break; //} //ProcessMap(); }
public void MakeMesh() { hexHeight = Vector3.Distance( tilemap.CellToWorld(HexTools.GetAdjacentTileOffset(Vector3Int.zero, Cardinality.N)), tilemap.CellToWorld(new Vector3Int(0, 0, 0))); float diagonalDist = Vector3.Distance( tilemap.CellToWorld(Vector3Int.zero), tilemap.CellToWorld(HexTools.GetAdjacentTileOffset(Vector3Int.zero, Cardinality.NE))); hexWidth = Mathf.Sqrt(diagonalDist * diagonalDist - Mathf.Pow(hexHeight * .5f, 2)) * 4 / 3; tilemap.ClearAllTiles(); var tiles = HexTools.GetSpiral(Vector3Int.zero, mapRadius); TileBase[] tileArray = new TileBase[tiles.Count]; for (int index = 0; index < tiles.Count; index++) { tileArray[index] = testTile; } tilemap.SetTiles(tiles.ToArray(), tileArray); if (mapRadius == 0) { mapRadius = 1; } float[,] noiseMap = Noise.GenerateNoiseMap(4 * mapRadius * 2, 3 * mapRadius * 2, noiseSettings, Vector2.zero); MeshIt(tiles.ToArray(), noiseMap); }