00001
00002
00003
00004
00005 #ifndef __I_TRIANGLE_SELECTOR_H_INCLUDED__
00006 #define __I_TRIANGLE_SELECTOR_H_INCLUDED__
00007
00008 #include "IReferenceCounted.h"
00009 #include "triangle3d.h"
00010 #include "aabbox3d.h"
00011 #include "matrix4.h"
00012 #include "line3d.h"
00013
00014 namespace irr
00015 {
00016 namespace scene
00017 {
00018
00019 class ISceneNode;
00020
00022
00028 class ITriangleSelector : public virtual IReferenceCounted
00029 {
00030 public:
00031
00033 virtual ~ITriangleSelector() {}
00034
00036 virtual s32 getTriangleCount() const = 0;
00037
00039
00053 virtual void getTriangles(core::triangle3df* triangles, s32 arraySize,
00054 s32& outTriangleCount, const core::matrix4* transform=0) const = 0;
00055
00057
00076 virtual void getTriangles(core::triangle3df* triangles, s32 arraySize,
00077 s32& outTriangleCount, const core::aabbox3d<f32>& box,
00078 const core::matrix4* transform=0) const = 0;
00079
00081
00100 virtual void getTriangles(core::triangle3df* triangles, s32 arraySize,
00101 s32& outTriangleCount, const core::line3d<f32>& line,
00102 const core::matrix4* transform=0) const = 0;
00103
00105
00113 virtual const ISceneNode* getSceneNodeForTriangle(u32 triangleIndex) const = 0;
00114
00115 };
00116
00117 }
00118 }
00119
00120
00121 #endif
00122