![]() |
TAPs 0.7.7.3
|
00001 /****************************************************************************** 00002 TAPsOpenGLHETriMeshOneModelMultiParts.hpp 00003 00004 SUKITTI PUNAK (07/25/2008) 00005 UPDATE (10/07/2009) 00006 ******************************************************************************/ 00007 #ifndef TAPs_OPENGL_HE_TRI_MESH_ONE_MODEL_MULTI_PARTS 00008 #define TAPs_OPENGL_HE_TRI_MESH_ONE_MODEL_MULTI_PARTS 00009 00018 #include "TAPsHETriMeshOneModelMultiParts.hpp" 00019 00020 BEGIN_NAMESPACE_TAPs__OpenGL 00021 //============================================================================= 00022 template <typename T> 00023 class OpenGLHETriMeshOneModelMultiParts : public /*virtual*/ HETriMeshOneModelMultiParts<T> { 00024 //------------------------------------------------------------------------- 00025 // put it through ostream 00026 friend std::ostream & operator<< ( std::ostream &output, OpenGLHETriMeshOneModelMultiParts<T> const &o ) 00027 { 00028 output << "\n======================\n" 00029 << "TAPs::OpenGL::OpenGLHETriMeshOneModelMultiParts<" 00030 << typeid(T).name() << "> Class\n" 00031 << "======================\n"; 00032 //----------------------------------------------------------- 00033 /* 00034 // Material Node from OpenGLSupport 00035 output << "\nMaterial Node" << "\n{\n" << o.material << "\n}"; 00036 //----------------------------------------------------------- 00037 // Nodes from XPolygonalModel<T> 00038 output << "\n\nVertices " << o.m_iNoVertices << "\n{"; 00039 for ( int i = 0; i < o.m_iNoVertices; ++i ) { 00040 output << "\n #" << i << "\t" << o.m_prXVertex[i]; 00041 } 00042 output << "\n}"; 00043 //----------------------------------------------------------- 00044 // Neighbor vertex ring#1 00045 if ( o.m_pviVertexRing1List ) { 00046 std::vector<int>::const_iterator iterator; 00047 output << "\n\nVertexRing1 " << o.m_iNoVertices << "\n{"; 00048 for ( int i = 0; i < o.m_iNoVertices; ++i ) { 00049 output << "\n #" << i; 00050 for ( iterator = o.m_pviVertexRing1List[i].begin(); 00051 iterator != o.m_pviVertexRing1List[i].end(); 00052 ++iterator ) 00053 { 00054 output << "\t" << *iterator; 00055 } 00056 } 00057 output << "\n}"; 00058 } 00059 //----------------------------------------------------------- 00060 // Faces Node 00061 output << "\n\nFaces " << o.m_iNoFaces << "\n{"; 00062 for ( int i = 0; i < o.m_iNoFaces; ++i ) { 00063 output << "\n #" << i << "\t" << o.m_prFace[i]; 00064 } 00065 output << "\n}"; 00066 */ 00067 return output; 00068 } 00069 00070 00071 //============================================================================= 00072 public: 00073 // Member Functions ------------------------------------------------------- 00074 00075 //--------------------------------------------------------------- 00076 // DEBUG 00077 void DrawFromListOfVertex () { 00078 Vector3<T> pos; 00079 glPointSize( 3 ); 00080 glBegin( GL_POINTS ); 00081 for ( int i = 0; i < GetNoVertices(); ++i ) { 00082 pos = *m_vListOfVertexPositions[i]; 00083 glVertex3f ( pos[0], pos[1], pos[2] ); 00084 } 00085 glEnd(); 00086 glPointSize( 1 ); 00087 } 00088 00089 //------------------------------------------------------------------------- 00090 // default constructor 00091 OpenGLHETriMeshOneModelMultiParts(); 00092 //------------------------------------------------------------------------- 00093 // destructor 00094 virtual ~OpenGLHETriMeshOneModelMultiParts(); 00095 //------------------------------------------------------------------------- 00096 //void DisplayGL() 00097 //virtual void DisplayGL( OpenGL::Enum::DrawMode DM = OpenGL::Enum::POLYGON ); 00098 virtual inline void ToggleDisplayVertexNormals () 00099 { bIsDisplayVertexNormals = !bIsDisplayVertexNormals; } 00100 00101 //------------------------------------------------------------------------- 00102 00103 #ifdef TAPs_ENABLE_FACE_VERTEX_COLOR 00104 virtual bool EnableVertexColors ( bool b ); 00105 #endif//TAPs_ENABLE_FACE_VERTEX_COLOR 00106 00107 #ifdef TAPs_ENABLE_FACE_VERTEX_TEXTURE_COORDINATES 00108 //virtual bool EnableVertexTextures ( bool b ); 00109 #endif//TAPs_ENABLE_FACE_VERTEX_TEXTURE_COORDINATES 00110 00111 // Data Members ----------------------------------------------------------- 00112 //--------------------------------------------------------------- 00113 //============================================================================= 00114 protected: 00115 // Member Functions ------------------------------------------------------- 00116 00117 // Helper Fn 00118 // void DrawGL() 00119 virtual void DrawGL ( GLenum ); 00120 00121 #ifdef TAPs_ADVANCED_SIMULATION 00122 void DrawVertexSimulationStatus (); 00123 #else //TAPs_ADVANCED_SIMULATION 00124 void DrawVertexSimulationStatus () {} 00125 #endif//TAPs_ADVANCED_SIMULATION 00126 00127 #ifdef TAPs_ENABLE_FACE_VERTEX_COLOR 00128 virtual void DrawGLWithFaceVertexColor_RGB ( GLenum ); 00129 virtual void DrawGLWithFaceVertexColor_RGBA ( GLenum ); 00130 #endif//TAPs_ENABLE_FACE_VERTEX_COLOR 00131 00132 #ifdef TAPs_ENABLE_FACE_VERTEX_TEXTURE_COORDINATES 00133 //virtual void DrawGLWithFaceVertexTexture_S ( GLenum ); 00134 //virtual void DrawGLWithFaceVertexTexture_ST ( GLenum ); 00135 //virtual void DrawGLWithFaceVertexTexture_STR ( GLenum ); 00136 #endif//TAPs_ENABLE_FACE_VERTEX_TEXTURE_COORDINATES 00137 00138 // Render by GLSL ------------------------------------------------------------- 00139 #ifdef TAPs_RENDER_BY_GLSL_DS_FACE_VERTEX 00140 virtual void DrawGLSLWithDSFaceVertex_RGB ( GLenum ); 00141 virtual void DrawGLSLWithDSFaceVertex_RGBA ( GLenum ); 00142 #endif//TAPs_RENDER_BY_GLSL_DS_FACE_VERTEX 00143 // ---------------------------------------------------------------------------- 00144 00145 // DEBUG 00146 void DrawGLParticleRef ( int partNo = -1 ); 00147 // DEBUG 00148 void DrawGLVertexRing1 ( int partNo = -1 ); 00149 // DEBUG 00150 void DrawGLSpringConnections ( int partNo = -1 ); 00151 // DEBUG 00152 void DrawGLSprings ( int partNo = -1 ); 00153 00154 // Data Members ----------------------------------------------------------- 00155 bool bIsDisplayVertexNormals; 00156 00157 //============================================================================= 00158 private: 00159 // Member Functions ------------------------------------------------------- 00160 //--------------------------------------------------------------- 00161 // Data Members ----------------------------------------------------------- 00162 //--------------------------------------------------------------- 00163 //============================================================================= 00164 }; // CLASS END: OpenGLHETriMeshOneModelMultiParts 00165 //============================================================================= 00166 END_NAMESPACE_TAPs__OpenGL 00167 //----------------------------------------------------------------------------- 00168 // Include definition if TAPs_USE_EXPORT is not defined 00169 //#if !defined( TAPs_USE_EXPORT ) 00170 #include "TAPsOpenGLHETriMeshOneModelMultiParts.cpp" 00171 //#endif 00172 //----------------------------------------------------------------------------- 00173 #endif 00174 //34567890123456789012345678901234567890123456789012345678901234567890123456789 00175 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----