|
IrrlichtEngine
|
00001 // Copyright (C) 2002-2011 Nikolaus Gebhardt 00002 // This file is part of the "Irrlicht Engine". 00003 // For conditions of distribution and use, see copyright notice in irrlicht.h 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 s32 getTriangleCount() const = 0; 00034 00036 00050 virtual void getTriangles(core::triangle3df* triangles, s32 arraySize, 00051 s32& outTriangleCount, const core::matrix4* transform=0) const = 0; 00052 00054 00073 virtual void getTriangles(core::triangle3df* triangles, s32 arraySize, 00074 s32& outTriangleCount, const core::aabbox3d<f32>& box, 00075 const core::matrix4* transform=0) const = 0; 00076 00078 00097 virtual void getTriangles(core::triangle3df* triangles, s32 arraySize, 00098 s32& outTriangleCount, const core::line3d<f32>& line, 00099 const core::matrix4* transform=0) const = 0; 00100 00102 00110 virtual ISceneNode* getSceneNodeForTriangle(u32 triangleIndex) const = 0; 00111 00113 00115 virtual u32 getSelectorCount() const = 0; 00116 00118 00120 virtual ITriangleSelector* getSelector(u32 index) = 0; 00121 00123 00125 virtual const ITriangleSelector* getSelector(u32 index) const = 0; 00126 }; 00127 00128 } // end namespace scene 00129 } // end namespace irr 00130 00131 #endif