#ifndef __C_OCT_TREE_SCENE_NODETRIANGLE_SELECTOR_H_INCLUDED__ #define __C_OCT_TREE_SCENE_NODETRIANGLE_SELECTOR_H_INCLUDED__ #include "ITriangleSelector.h" namespace irr { namespace scene { class COctTreeSceneNode; //! triangle selector which does use the OctTree already available for a COctTreeSceneNode class COctTreeSceneNodeTriangleSelector : public ITriangleSelector { public: //! Constructs a selector based on a mesh COctTreeSceneNodeTriangleSelector(COctTreeSceneNode* node); ~COctTreeSceneNodeTriangleSelector(); //! Returns amount of all available triangles in this selector virtual s32 getTriangleCount() const; //! Gets all triangles. virtual void getTriangles(core::triangle3df* triangles, s32 arraySize, s32& outTriangleCount, const core::matrix4* transform=0); //! Gets all triangles which lie within a specific bounding box. void getTriangles(core::triangle3df* triangles, s32 arraySize, s32& outTriangleCount, const core::aabbox3d& box, const core::matrix4* transform=0); //! Gets all triangles which have or may have contact with a 3d line. virtual void getTriangles(core::triangle3df* triangles, s32 arraySize, s32& outTriangleCount, const core::line3d& line, const core::matrix4* transform=0); private: COctTreeSceneNode * SceneNode; }; } // end namespace scene } // end namespace irr #endif // __C_OCT_TREE_SCENE_NODETRIANGLE_SELECTOR_H_INCLUDED__