void TriangulateCornerTerraces( Vector3 begin, HexCell beginCell, Vector3 left, HexCell leftCell, Vector3 right, HexCell rightCell ) { Vector3 vert3 = Hexmetrics.TerraceLerp(begin, left, 1); Vector3 vert4 = Hexmetrics.TerraceLerp(begin, right, 1); Color c3 = Hexmetrics.TerraceLerp(beginCell.color, leftCell.color, 1); Color c4 = Hexmetrics.TerraceLerp(beginCell.color, rightCell.color, 1); terrain.AddTriangle(begin, vert3, vert4); terrain.AddTriangleColor(beginCell.color, c3, c4); for (int i = 2; i < Hexmetrics.terraceSteps; i++) { Vector3 vert1 = vert3; Vector3 vert2 = vert4; Color c1 = c3; Color c2 = c4; vert3 = Hexmetrics.TerraceLerp(begin, left, i); vert4 = Hexmetrics.TerraceLerp(begin, right, i); c3 = Hexmetrics.TerraceLerp(beginCell.color, leftCell.color, i); c4 = Hexmetrics.TerraceLerp(beginCell.color, rightCell.color, i); terrain.AddQuad(vert1, vert2, vert3, vert4); terrain.AddQuadColor(c1, c2, c3, c4); } terrain.AddQuad(vert3, vert4, left, right); terrain.AddQuadColor(c3, c4, leftCell.color, rightCell.color); }
void TriangulateEdgeTerraces( Vector3 beginLeft, Vector3 beginRight, HexCell beginCell, Vector3 endLeft, Vector3 endRight, HexCell endCell ) { Vector3 vert3 = Hexmetrics.TerraceLerp(beginLeft, endLeft, 1); Vector3 vert4 = Hexmetrics.TerraceLerp(beginRight, endRight, 1); Color c2 = Hexmetrics.TerraceLerp(beginCell.color, endCell.color, 1); terrain.AddQuad(beginLeft, beginRight, vert3, vert4); terrain.AddQuadColor(beginCell.color, c2); for (int i = 2; i < Hexmetrics.terraceSteps; i++) { Vector3 vert1 = vert3; Vector3 vert2 = vert4; Color c1 = c2; vert3 = Hexmetrics.TerraceLerp(beginLeft, endLeft, i); vert4 = Hexmetrics.TerraceLerp(beginRight, endRight, i); c2 = Hexmetrics.TerraceLerp(beginCell.color, endCell.color, i); terrain.AddQuad(vert1, vert2, vert3, vert4); terrain.AddQuadColor(c1, c2); } terrain.AddQuad(vert3, vert4, endLeft, endRight); terrain.AddQuadColor(c2, endCell.color); }