#ifndef _DistanceQueue_H__ #define _DistanceQueue_H__ #include "OcclusionQuery.h" #include namespace GtpVisibility { /* We define HierarchyNode as void * because there is no common ancestor for hierarchy nodes in Ogre */ typedef void HierarchyNode; class HierarchyInterface; /** This class implements the less operator for the priority queue, i.e., a greater distance has a lower priority in the queue. */ template class GtDistance { public: GtDistance(HierarchyInterface *hierarchyInterface): mHierarchyInterface(hierarchyInterface) {} bool operator() (const T v1, const T v2) const { //return false; return mHierarchyInterface->GetSquaredDistance(v1) > mHierarchyInterface->GetSquaredDistance(v2); } private: HierarchyInterface *mHierarchyInterface; }; /** A priority queue where closer hierarchy nodes are given a higher priority. */ typedef std::priority_queue, GtDistance::value_type> > DistanceQueue; } // namespace GtpVisibility #endif // DistanceQueue_H