private static void AddTriangle(HexMeshData meshData, Vector3 center, Vector3 uv, float neighborElevation, float previousElevation, float nextElevation, HexDirection direction, Color color) { var v1 = center; var v2 = center + meshData.GetFirstSolidCorner(direction); var v3 = center + meshData.GetSecondSolidCorner(direction); //Add inner solid triangle AddTriangle(meshData, v1, v2, v3, color, uv); //Add Quad To Fill Border Gap var v4 = v2 + meshData.GetBridge(direction); v4.y = neighborElevation; var v5 = v3 + meshData.GetBridge(direction); v5.y = neighborElevation; AddQuad(meshData, v2, v3, v4, v5, color, uv); //Add Triangles to fill gap on sides of quad var v6 = center + meshData.GetFirstCorner(direction); v6.y = Mathf.Min(neighborElevation, previousElevation); AddTriangle(meshData, v2, v6, v4, color, uv); var v7 = center + meshData.GetSecondCorner(direction); v7.y = Mathf.Min(neighborElevation, nextElevation); AddTriangle(meshData, v3, v5, v7, color, uv); }