public void PushTriangle(short vtColorIndex, ref Vector3 v1, ref Vector3 v2, ref Vector3 v3, bool renderWinding) { int lastIndex = Vertices.Count; Vertices.Add(v1); Vertices.Add(v2); Vertices.Add(v3); // winding is for RHS so apply reverse for Unity if (renderWinding) { Triangles.Add(lastIndex + 0); Triangles.Add(lastIndex + 1); Triangles.Add(lastIndex + 2); } else { Triangles.Add(lastIndex + 0); Triangles.Add(lastIndex + 2); Triangles.Add(lastIndex + 1); } for (int i = 0; i < 3; ++i) { ColorIndices.Add(vtColorIndex); } }
public void PushQuad(short vtColorIndex, ref Vector3 v1, ref Vector3 v2, ref Vector3 v3, ref Vector3 v4, bool renderWinding) { int lastIndex = Vertices.Count; Vertices.Add(v1); Vertices.Add(v2); Vertices.Add(v3); Vertices.Add(v4); if (renderWinding) { Triangles.Add(lastIndex + 0); Triangles.Add(lastIndex + 1); Triangles.Add(lastIndex + 2); Triangles.Add(lastIndex + 0); Triangles.Add(lastIndex + 2); Triangles.Add(lastIndex + 3); } else { Triangles.Add(lastIndex + 0); Triangles.Add(lastIndex + 2); Triangles.Add(lastIndex + 1); Triangles.Add(lastIndex + 0); Triangles.Add(lastIndex + 3); Triangles.Add(lastIndex + 2); } for (int i = 0; i < 4; ++i) { ColorIndices.Add(vtColorIndex); } }
public void MergeChildBrick(bool accInvertNext, short color, Matrix4x4 trMatrix, BrickMeshInfo childMesh) { int vtCnt = Vertices.Count; for (int i = 0; i < childMesh.Vertices.Count; ++i) { Vertices.Add(trMatrix.MultiplyPoint3x4(childMesh.Vertices[i])); } for (int i = 0; i < childMesh.ColorIndices.Count; ++i) { ColorIndices.Add(LdConstant.GetEffectiveColorIndex(childMesh.ColorIndices[i], color)); } bool inverted = accInvertNext ^ (trMatrix.determinant < 0); for (int i = 0; i < childMesh.Triangles.Count; i += 3) { if (inverted) { Triangles.Add(vtCnt + childMesh.Triangles[i]); Triangles.Add(vtCnt + childMesh.Triangles[i + 2]); Triangles.Add(vtCnt + childMesh.Triangles[i + 1]); } else { Triangles.Add(vtCnt + childMesh.Triangles[i]); Triangles.Add(vtCnt + childMesh.Triangles[i + 1]); Triangles.Add(vtCnt + childMesh.Triangles[i + 2]); } } }