#ifndef _PlatformQueryManager_H__ #define _PlatformQueryManager_H__ #include "VisibilityInfo.h" #include "QueryManager.h" #include "OgrePlatformHierarchyInterface.h" #include "VisibilityMesh.h" namespace Ogre { /** Class which implements the QueryManager for Ogre scene queries. */ class __declspec(dllexport) PlatformQueryManager: public GtpVisibility::QueryManager { public: /** Constructor taking a hierarchy interface as an argument. This allows to operate on different hierarchy types, while reusing the implementation of the query methods. */ PlatformQueryManager(PlatformHierarchyInterface *hierarchyInterface, Viewport *vp, int queryModes) : QueryManager(queryModes), mViewport(vp), mWasInitialised(false), mHierarchyInterface(hierarchyInterface) {} /** Uses the specified point to execute the visibility query in all directions. @sa ComputeCameraVisibility() */ virtual void ComputeFromPointVisibility(const Vector3 &point, NodeInfoContainer *visibleNodes, MeshInfoContainer *visibleGeometry, PatchInfoContainer *visiblePatches, const bool relativeVisibility, const bool approximateVisibility); virtual void ComputeCameraVisibility(const Camera &camera, NodeInfoContainer *visibleNodes, MeshInfoContainer *visibleGeometry, PatchInfoContainer *visiblePatches, const bool relativeVisibility, const bool approximateVisibility); //virtual bool ShootRay(const Ray &ray, std::vector *visibleMeshes, bool isGlobalLine = false); /** Sets a viewport for rendering. */ void SetViewport(Viewport *vp); protected: Viewport *mViewport; bool mWasInitialised; PlatformHierarchyInterface *mHierarchyInterface; }; } // namespace Ogre #endif // PlatformQueryManager