TAPs 0.7.7.3
TAPsOpenGLHETriMeshOneModelMultiParts.hpp
Go to the documentation of this file.
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----+----
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines