/* ----------------------------------------------------------------------------- This source file is part of the GameTools Project http://www.gametools.org Author: Martin Szydlowski ----------------------------------------------------------------------------- */ #ifndef _OgreKdTreeCamera_H_ #define _OgreKdTreeCamera_H_ #include #define KDCAMPTR_CAST(cam) (static_cast(cam)) namespace Ogre { class KdTreeCamera : public Camera { public: enum NodeVisibility { KDNV_NONE, KDNV_PART, KDNV_FULL }; //typedef NodeVisibility (KdTreeCamera::*VisFunction)(const AxisAlignedBox& box) const; // default constructor KdTreeCamera(const String& name, SceneManager *sm); // default destructor ~KdTreeCamera(); // chage vis mode void setEnhancedVisMode(bool enhanced); // query vis mode bool getEnhancedVisMode(void); // function pointer to the actual getvis function // allows choosing between regular vis (NONE/PART, same es isVisible) // and enhaced vis (NONE/PART/FULL) for early traversal abort //NodeVisibility (KdTreeCamera::*getVisibility)(const AxisAlignedBox& box) const; //VisFunction getVisibility; //NodeVisibility getVisibility(const AxisAlignedBox& box ) const; // regular visibility, like isVisible NodeVisibility getVisibilitySimple(const AxisAlignedBox& box ) const; // enhanced visibility NodeVisibility getVisibilityEnhanced(const AxisAlignedBox& box) const; protected: // flag indicating current vis mode, default is on (true) bool mEnhancedVisMode; }; } // namespace Ogre #endif // _OgreKdTreeCamera_H_