#ifndef _PlatformQueryManager_H__ #define _PlatformQueryManager_H__ #include "VisibilityInfo.h" #include "QueryManager.h" #include "HierarchyInterface.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(GtpVisibility::HierarchyInterface *hierarchyInterface, Viewport *vp, int queryModes); /** Uses the specified point to execute the visibility query in all directions. @sa ComputeCameraVisibility() */ void ComputeFromPointVisibility(const Vector3 &point, GtpVisibility::NodeInfoContainer *visibleNodes, GtpVisibility::MeshInfoContainer *visibleGeometry, GtpVisibility::PatchInfoContainer *visiblePatches, bool relativeVisibility = false); void ComputeCameraVisibility(const Camera &camera, GtpVisibility::NodeInfoContainer *visibleNodes, GtpVisibility::MeshInfoContainer *visibleGeometry, GtpVisibility::PatchInfoContainer *visiblePatches, bool relativeVisibility = false); bool ShootRay(const Ray &ray, std::vector *visibleMeshes, bool isGlobalLine = false); /** Sets a viewport for rendering. */ void SetViewport(Viewport *vp); protected: #ifdef ITEM_BUFFER void CollectItemBufferResults( GtpVisibility::MeshInfoContainer *visibleGeometry, GtpVisibility::PatchInfoContainer *visiblePatches); void InitItemBuffer(GtpVisibility::MeshInfoContainer *visibleGeometry, GtpVisibility::PatchInfoContainer *visiblePatches); #endif // ITEM_BUFFER Viewport *mViewport; bool mWasInitialised; }; } // namespace Ogre #endif // PlatformQueryManager