Irrlicht 3D Engine
ITriangleSelector.h
Go to the documentation of this file.
00001 // Copyright (C) 2002-2012 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