/** * Create a new BSPTree instance from @mesh using @transform * to transform all vertices, normals, and tangents. */ public static BSPTree FromMesh(Mesh mesh, Matrix4x4 transform) { BSPTree tree = new BSPTree(); // get a list of all triangles in @mesh List <Triangle> meshTriangles = GetMeshTriangles(mesh); // loop through each triangle and transform its vertices by @transform for (int i = 0; i < meshTriangles.Count; i++) { Triangle tri = meshTriangles[i]; for (int vi = 0; vi < 3; vi++) { Vertex vtx = TransformVertex(tri.GetVertexByIndex(vi), transform); tri.SetVertexByIndex(vi, vtx); } tri.RebuildOrientationPlane(); meshTriangles[i] = tri; } tree.AddTriangles(meshTriangles); return(tree); }