private List <VA_Triangle> GetAllTriangles(Mesh mesh) { var tris = new List <VA_Triangle>(); var positions = mesh.vertices; for (var i = 0; i < mesh.subMeshCount; i++) { switch (mesh.GetTopology(i)) { case MeshTopology.Triangles: { var indices = mesh.GetTriangles(i); for (var j = 0; j < indices.Length; j += 3) { var triangle = new VA_Triangle(); tris.Add(triangle); triangle.A = positions[indices[j + 0]]; triangle.B = positions[indices[j + 1]]; triangle.C = positions[indices[j + 2]]; triangle.CalculatePlanes(); } } break; } } return(tris); }
private VA_Triangle GetTriangle(int triangleCount) { if (triangleCount == triangles.Count) { var triangle = new VA_Triangle(); triangles.Add(triangle); return(triangle); } return(triangles[triangleCount]); }