private void SmoothEdgeDetailed(Tile tile, List<string> neighboursTerrainList, string[] neighboursTerrain)
Color[] cols = new Color[24];
foreach (string terrainType in neighboursTerrainList)
MeshData mesh = GetMesh(terrainType);
int startVertex = mesh.vertices.Count;
mesh.AddVertex(tile.Position.x, tile.Position.y + 1f);
mesh.AddVertex(tile.Position.x + .25f, tile.Position.y + 1f);
mesh.AddVertex(tile.Position.x + .5f, tile.Position.y + 1f);
mesh.AddVertex(tile.Position.x + .75f, tile.Position.y + 1f);
mesh.AddVertex(tile.Position.x + 1f, tile.Position.y + 1f);
mesh.AddVertex(tile.Position.x + 1f, tile.Position.y + .75f);
mesh.AddVertex(tile.Position.x + .75f, tile.Position.y + .75f);
mesh.AddVertex(tile.Position.x + .5f, tile.Position.y + .75f);
mesh.AddVertex(tile.Position.x + .25f, tile.Position.y + .75f);
mesh.AddVertex(tile.Position.x, tile.Position.y + .75f);
mesh.AddVertex(tile.Position.x, tile.Position.y + .5f);
mesh.AddVertex(tile.Position.x + .25f, tile.Position.y + .5f);
mesh.AddVertex(tile.Position.x + .75f, tile.Position.y + .5f);
mesh.AddVertex(tile.Position.x + 1f, tile.Position.y + .5f);
mesh.AddVertex(tile.Position.x + 1f, tile.Position.y + .25f);
mesh.AddVertex(tile.Position.x + .75f, tile.Position.y + .25f);
mesh.AddVertex(tile.Position.x + .5f, tile.Position.y + .25f);
mesh.AddVertex(tile.Position.x + .25f, tile.Position.y + .25f);
mesh.AddVertex(tile.Position.x, tile.Position.y + .25f);
mesh.AddVertex(tile.Position.x, tile.Position.y);
mesh.AddVertex(tile.Position.x + .25f, tile.Position.y);
mesh.AddVertex(tile.Position.x + .5f, tile.Position.y);
mesh.AddVertex(tile.Position.x + .75f, tile.Position.y);
mesh.AddVertex(tile.Position.x + 1f, tile.Position.y);
for (int i = 0; i < cols.Length; i++)
for (int i = 0; i < 8; i++)
if (terrainType == neighboursTerrain[i])
mesh.colors.AddRange(cols);
mesh.AddTriangle(startVertex, 0, 1, 9);
mesh.AddTriangle(startVertex, 1, 8, 9);
mesh.AddTriangle(startVertex, 1, 2, 8);
mesh.AddTriangle(startVertex, 2, 7, 8);
mesh.AddTriangle(startVertex, 2, 6, 7);
mesh.AddTriangle(startVertex, 2, 3, 6);
mesh.AddTriangle(startVertex, 3, 5, 6);
mesh.AddTriangle(startVertex, 3, 4, 5);
mesh.AddTriangle(startVertex, 6, 5, 13);
mesh.AddTriangle(startVertex, 6, 13, 12);
mesh.AddTriangle(startVertex, 6, 15, 17);
mesh.AddTriangle(startVertex, 8, 6, 17);
mesh.AddTriangle(startVertex, 8, 11, 10);
mesh.AddTriangle(startVertex, 9, 8, 10);
mesh.AddTriangle(startVertex, 10, 17, 18);
mesh.AddTriangle(startVertex, 10, 11, 17);
mesh.AddTriangle(startVertex, 12, 13, 15);
mesh.AddTriangle(startVertex, 13, 14, 15);
mesh.AddTriangle(startVertex, 14, 23, 22);
mesh.AddTriangle(startVertex, 15, 14, 22);
mesh.AddTriangle(startVertex, 15, 22, 21);
mesh.AddTriangle(startVertex, 21, 16, 15);
mesh.AddTriangle(startVertex, 17, 16, 21);
mesh.AddTriangle(startVertex, 17, 21, 20);
mesh.AddTriangle(startVertex, 18, 17, 20);
mesh.AddTriangle(startVertex, 18, 20, 19);