00001 #ifndef _MESHTRI_H_ 00002 #define _MESHTRI_H_ 00003 00004 #include "IGS_MeshBase.h" 00005 00006 class IGS_Mesh; 00007 00008 class IGS_MeshTri 00009 : 00010 public IGS_MeshBase 00011 { 00012 public: 00013 class Triangle 00014 { 00015 public: 00016 int v0; //IAN IMPROVE: do these need to be ints? 00017 int v1; 00018 int v2; 00019 int n; //the normal pointer for the entire triangle 00020 }; 00021 00022 IGS_MeshTri(); 00023 IGS_MeshTri( const IGS_MeshTri& right ); 00024 IGS_MeshTri( const IGS_Mesh& right ); 00025 00026 void AddFacet( const MeshFacet& f ); 00027 void AddTriangle( const int v0, const int v1, const int v2 ); 00028 Vector4 ComputeNormalForTriangle( const int triangleNumber ); 00029 int GetNumTriangles() const; 00030 const Triangle& GetTriangle( const int i ) const; 00031 virtual void Prepare( const IGS_Controller& controller ); 00032 virtual void Render( const IGS_Controller& controller ) const; 00033 00034 protected: 00035 00036 std::vector< Triangle > m_Triangles; 00037 }; 00038 00039 //============================================================================= 00040 #endif