![]() |
TAPs 0.7.7.3
|
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