TAPs 0.7.7.3
TAPsMultiMeshModelWithMBV.cpp
Go to the documentation of this file.
00001 /******************************************************************************
00002 TAPsMultiMeshModelWithMBV.cpp
00003 
00004 A collection of mesh models - 
00005 can be any mixing of Polygonal, XPolygonal, and Halfedge Models.
00006 
00007 SUKITTI PUNAK   (08/08/2006)
00008 UPDATE          (08/09/2006)
00009 ******************************************************************************/
00010 #include "TAPsMultiMeshModelWithMBV.hpp"
00011 // Using Inclusion Model (i.e. definitions are included in declarations)
00012 //                       (this name.cpp is included in name.hpp)
00013 // Each friend is defined directly inside its declaration.
00014 
00015 BEGIN_NAMESPACE_TAPs__OpenGL
00016 //=============================================================================
00017 //-----------------------------------------------------------------------------
00018 // static initialization
00019 template <typename T> int MultiMeshModelWithMBV<T>::m_iTotal = 0;
00020 //-----------------------------------------------------------------------------
00021 // Default Constructor
00022 template <typename T>
00023 MultiMeshModelWithMBV<T>::MultiMeshModelWithMBV ()
00024     : m_iId( m_iTotal++ ), m_pcName( NULL )
00025 {
00026     m_MultiMeshModel        = new MultiMeshModel<T>();
00027     m_MultiBoundingVolume   = new MultiBoundingVolume<T>();
00028 
00029     #ifdef  TAPs_DEBUG_MODE
00030     std::cout << "MultiMeshModelWithMBV<" << typeid(T).name() << "> #" << m_iId << " constructor\n";
00031     #endif//TAPs_DEBUG_MODE
00032 }
00033 //-----------------------------------------------------------------------------
00034 // Constructor
00035 template <typename T>
00036 MultiMeshModelWithMBV<T>::MultiMeshModelWithMBV (char *name)
00037     : m_iId( m_iTotal++ ), m_pcName( NULL )
00038 {
00039     SetName( name );
00040 
00041     #ifdef  TAPs_DEBUG_MODE
00042     std::cout << "MultiMeshModelWithMBV<" << typeid(T).name() << "> #" << m_iId << " constructor\n";
00043     #endif//TAPs_DEBUG_MODE
00044 
00045     if ( m_MultiMeshModel ) {
00046         delete m_MultiMeshModel;
00047         m_MultiMeshModel = NULL;
00048     }
00049     if ( m_MultiBoundingVolume ) {
00050         delete m_MultiBoundingVolume;
00051         m_MultiBoundingVolume = NULL;
00052     }
00053 }
00054 //-----------------------------------------------------------------------------
00055 // Destructor
00056 template <typename T>
00057 MultiMeshModelWithMBV<T>::~MultiMeshModelWithMBV ()
00058 {
00059     if ( m_pcName ) {
00060         delete [] m_pcName;
00061         m_pcName = NULL;
00062     }
00063     --m_iTotal;
00064 
00065     #ifdef  TAPs_DEBUG_MODE
00066     std::cout << "MultiMeshModelWithMBV<" << typeid(T).name() << "> #"<< m_iId << " destructor\n";
00067     #endif//TAPs_DEBUG_MODE
00068 }
00069 //-----------------------------------------------------------------------------
00070 // Get/Set Fns
00071 template <typename T>
00072 int MultiMeshModelWithMBV<T>::GetID () const
00073 {
00074     return m_iId;
00075 }
00076 //-----------------------------------------------------------------------------
00077 template <typename T>
00078 void MultiMeshModelWithMBV<T>::SetID ( int id )
00079 {
00080     m_iId = id;
00081 }
00082 //-----------------------------------------------------------------------------
00083 template <typename T>
00084 char const * const MultiMeshModelWithMBV<T>::GetName () const
00085 {
00086     return m_pcName;
00087 }
00088 //-----------------------------------------------------------------------------
00089 template <typename T>
00090 void MultiMeshModelWithMBV<T>::SetName ( char * name )
00091 {
00092     if ( m_pcName ) {
00093         delete [] m_pcName;
00094         m_pcName = NULL;
00095     }
00096     m_pcName = new char[ strlen(name) + 1 ];
00097     strcpy( m_pcName, name );
00098 }
00099 //-----------------------------------------------------------------------------
00100 // Initailize
00101 template <typename T>
00102 void MultiMeshModelWithMBV<T>::Initialize ()
00103 {
00104     m_MultiMeshModel->Initialize();
00105 }
00106 //-----------------------------------------------------------------------------
00107 // Display By OpenGL
00108 template <typename T>
00109 void MultiMeshModelWithMBV<T>::DisplayGL ( OpenGL::Enum::DrawMode DM )
00110 {
00111     m_MultiMeshModel->DisplayGL( DM );
00112 }
00113 //-----------------------------------------------------------------------------
00114 // Display By OpenGL
00115 template <typename T>
00116 void MultiMeshModelWithMBV<T>::DisplayGLUsingColorMaterial ( 
00117         OpenGL::Enum::DrawMode  DM, 
00118         OpenGL::Enum::Face      F )
00119 {
00120     m_MultiMeshModel->DisplayGLUsingColorMaterial( DM, F );
00121 }
00122 //-----------------------------------------------------------------------------
00123 //=============================================================================
00124 END_NAMESPACE_TAPs__OpenGL
00125 //-----------------------------------------------------------------------------
00126 //345678901234567890123456789012345678901234567890123456789012345678901234567890
00127 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines