public static void MirrorZ(Vertex[] vertices, ProceduralObject obj) { for (int i = 0; i < vertices.Length; i++) { vertices[i].Position.z = -vertices[i].Position.z; } obj.flipFaces = !obj.flipFaces; VertexUtils.flipFaces(obj); if (obj.normalsRecalcMode == NormalsRecalculation.None && !obj.IsPloppableAsphalt()) { obj.normalsRecalcMode = NormalsRecalculation.Default; } obj.RecalculateNormals(); }
public static void flipFaces(ProceduralObject obj) { for (int m = 0; m < obj.m_mesh.subMeshCount; m++) { int[] triangles = obj.m_mesh.GetTriangles(m); for (int i = 0; i < triangles.Length; i += 3) { int temp = triangles[i]; triangles[i] = triangles[i + 1]; triangles[i + 1] = temp; } obj.m_mesh.SetTriangles(triangles, m); } obj.RecalculateNormals(); }