#include "ViewCell.h" #include "Mesh.h" #include "MeshKdTree.h" #include "Triangle3.h" ViewCell::ViewCell(Mesh *mesh): mMesh(mesh), mPvs(NULL) { } Mesh *ViewCell::GetMesh() { return mMesh; } BspPvs *ViewCell::GetPVS() { return mPvs; } AxisAlignedBox3 ViewCell::GetBox() { return mMesh->mBox; } int ViewCell::CastRay(Ray &ray) { return 0; } bool ViewCell::IsConvex() { return mMesh->mIsConvex; } bool ViewCell::IsWatertight() { return mMesh->mIsWatertight; } float ViewCell::IntersectionComplexity() { return (float)mMesh->mFaces.size(); } int ViewCell::Type() const { return VIEWCELL; } void ViewCell::GetRandomSurfacePoint(Vector3 &point, Vector3 &normal) { point = Vector3(0,0,0); } void ViewCell::DeriveViewCells(const ObjectContainer &objects, ViewCellContainer &viewCells, const int maxViewCells) { // maximal max viewcells int limit = maxViewCells > 0 ? std::min((int)objects.size(), maxViewCells) : (int)objects.size(); for (int i = 0; i < limit; ++i) { Intersectable *object = objects[i]; // extract the mesh instances if (object->Type() == Intersectable::MESH_INSTANCE) { MeshInstance *inst = dynamic_cast(object); ViewCell *viewCell = new ViewCell(inst->GetMesh()); viewCells.push_back(viewCell); } //TODO: transformed meshes } }