public virtual BSPtreeObject CreateSubObject(Vector3 a, Vector3 b, Vector3 c) { BSPtreeObject subObj = new BSPtreeObject(); subObj.vertices[0] = vertices[0] * a.x + vertices[1] * a.y + vertices[2] * a.z; subObj.vertices[1] = vertices[0] * b.x + vertices[1] * b.y + vertices[2] * b.z; subObj.vertices[2] = vertices[0] * c.x + vertices[1] * c.y + vertices[2] * c.z; return(subObj); }
static public List <BSPtreeObject> CreateBSPtreeObjectWithMesh(List <Mesh> meshes) { List <BSPtreeObject> objs = new List <BSPtreeObject>(); foreach (var mesh in meshes) { int triangleCount = mesh.triangles.Length / 3; for (int i = 0; i < triangleCount; ++i) { var bspObj = new BSPtreeObject(); int i0 = mesh.triangles[i * 3]; int i1 = mesh.triangles[i * 3 + 1]; int i2 = mesh.triangles[i * 3 + 2]; bspObj.vertices[0] = mesh.vertices[i0]; bspObj.vertices[1] = mesh.vertices[i1]; bspObj.vertices[2] = mesh.vertices[i2]; objs.Add(bspObj); } } return(objs); }