![]() |
TAPs 0.7.7.3
|
00001 /****************************************************************************** 00002 TAPsRoomBasic.cpp 00003 ******************************************************************************/ 00007 /****************************************************************************** 00008 SUKITTI PUNAK (08/30/2010) 00009 UPDATE (09/03/2010) 00010 ******************************************************************************/ 00011 #include "TAPsRoomBasic.hpp" 00012 // Using Inclusion Model (i.e. definitions are included in declarations) 00013 // (this name.cpp is included in name.hpp) 00014 // Each friend is defined directly inside its declaration. 00015 00016 BEGIN_NAMESPACE_TAPs 00017 //============================================================================= 00018 // Constructors 00019 //----------------------------------------------------------------------------- 00020 template <typename T> 00021 RoomBasic<T>::RoomBasic () 00022 : HalfDimensions( T(0.5), T(0.5), T(0.5) ) 00023 , ColorOfWallXp( 1.0f, 0.7f, 0.7f, 0.8f ) 00024 , ColorOfWallXn( 0.9f, 0.6f, 0.6f, 0.8f ) 00025 , ColorOfWallYp( 0.7f, 1.0f, 0.7f, 0.8f ) 00026 , ColorOfWallYn( 0.6f, 0.9f, 0.6f, 0.8f ) 00027 , ColorOfWallZp( 0.7f, 0.7f, 1.0f, 0.8f ) 00028 , ColorOfWallZn( 0.6f, 0.6f, 0.9f, 0.8f ) 00029 {} 00030 //----------------------------------------------------------------------------- 00031 template <typename T> 00032 RoomBasic<T>::RoomBasic ( RoomBasic<T> const &orig ) 00033 : Center( orig.Center ) 00034 , HalfDimensions( orig.HalfDimensions ) 00035 , Transform( orig.Transform ) 00036 , ColorOfWallXp( orig.ColorOfWallXp ) 00037 , ColorOfWallXn( orig.ColorOfWallXn ) 00038 , ColorOfWallYp( orig.ColorOfWallYp ) 00039 , ColorOfWallYn( orig.ColorOfWallYn ) 00040 , ColorOfWallZp( orig.ColorOfWallZp ) 00041 , ColorOfWallZn( orig.ColorOfWallZn ) 00042 {} 00043 //----------------------------------------------------------------------------- 00044 template <typename T> 00045 RoomBasic<T>::~RoomBasic () 00046 {} 00047 //----------------------------------------------------------------------------- 00048 template <typename T> 00049 std::string RoomBasic<T>::StrInfo () const 00050 { 00051 std::ostringstream ss; 00052 ss << "RoomBasic<" << typeid(T).name() << ">"; 00053 ss << "is centered at " << Center; 00054 ss << " with dimensions of " << HalfDimensions*2; 00055 ss << " and transformation of " << Transform; 00056 ss << "\n"; 00057 return ss.str(); 00058 } 00059 //----------------------------------------------------------------------------- 00060 //============================================================================= 00061 // Assignment Operator 00062 //----------------------------------------------------------------------------- 00063 template <typename T> 00064 RoomBasic<T> & RoomBasic<T>::operator= ( RoomBasic<T> const &orig ) 00065 { 00066 Center = orig.Center; 00067 HalfDimensions = orig.HalfDimensions; 00068 Transform = orig.Transform; 00069 ColorOfWallXp = orig.ColorOfWallXp; 00070 ColorOfWallXn = orig.ColorOfWallXn; 00071 ColorOfWallYp = orig.ColorOfWallYp; 00072 ColorOfWallYn = orig.ColorOfWallYn; 00073 ColorOfWallZp = orig.ColorOfWallZp; 00074 ColorOfWallZn = orig.ColorOfWallZn; 00075 return *this; 00076 } 00077 //----------------------------------------------------------------------------- 00078 //============================================================================= 00079 00080 00081 //============================================================================= 00082 // OpenGL 00083 #if defined(__gl_h_) || defined(__GL_H__) 00084 template <typename T> 00085 void RoomBasic<T>::Draw () const 00086 { 00087 Transform.TransformByOpenGLForDrawing(); 00088 glPushAttrib( GL_ALL_ATTRIB_BITS ); 00089 glPushMatrix(); 00090 glTranslatef( Center[0], Center[1], Center[2] ); 00091 glEnable( GL_COLOR_MATERIAL ); 00092 glBegin( GL_QUADS ); 00093 glColor4f( ColorOfWallZp[0], ColorOfWallZp[1], ColorOfWallZp[2], ColorOfWallZp[3] ); 00094 glVertex3f( -HalfDimensions[0], -HalfDimensions[1], HalfDimensions[2] ); 00095 glVertex3f( -HalfDimensions[0], HalfDimensions[1], HalfDimensions[2] ); 00096 glVertex3f( HalfDimensions[0], HalfDimensions[1], HalfDimensions[2] ); 00097 glVertex3f( HalfDimensions[0], -HalfDimensions[1], HalfDimensions[2] ); 00098 glColor4f( ColorOfWallZn[0], ColorOfWallZn[1], ColorOfWallZn[2], ColorOfWallZn[3] ); 00099 glVertex3f( -HalfDimensions[0], -HalfDimensions[1], -HalfDimensions[2] ); 00100 glVertex3f( HalfDimensions[0], -HalfDimensions[1], -HalfDimensions[2] ); 00101 glVertex3f( HalfDimensions[0], HalfDimensions[1], -HalfDimensions[2] ); 00102 glVertex3f( -HalfDimensions[0], HalfDimensions[1], -HalfDimensions[2] ); 00103 glColor4f( ColorOfWallYp[0], ColorOfWallYp[1], ColorOfWallYp[2], ColorOfWallYp[3] ); 00104 glVertex3f( -HalfDimensions[0], HalfDimensions[1], HalfDimensions[2] ); 00105 glVertex3f( HalfDimensions[0], HalfDimensions[1], HalfDimensions[2] ); 00106 glVertex3f( HalfDimensions[0], HalfDimensions[1], -HalfDimensions[2] ); 00107 glVertex3f( -HalfDimensions[0], HalfDimensions[1], -HalfDimensions[2] ); 00108 glColor4f( ColorOfWallYn[0], ColorOfWallYn[1], ColorOfWallYn[2], ColorOfWallYn[3] ); 00109 glVertex3f( -HalfDimensions[0], -HalfDimensions[1], HalfDimensions[2] ); 00110 glVertex3f( -HalfDimensions[0], -HalfDimensions[1], -HalfDimensions[2] ); 00111 glVertex3f( HalfDimensions[0], -HalfDimensions[1], -HalfDimensions[2] ); 00112 glVertex3f( HalfDimensions[0], -HalfDimensions[1], HalfDimensions[2] ); 00113 glColor4f( ColorOfWallXp[0], ColorOfWallXp[1], ColorOfWallXp[2], ColorOfWallXp[3] ); 00114 glVertex3f( HalfDimensions[0], -HalfDimensions[1], HalfDimensions[2] ); 00115 glVertex3f( HalfDimensions[0], -HalfDimensions[1], -HalfDimensions[2] ); 00116 glVertex3f( HalfDimensions[0], HalfDimensions[1], -HalfDimensions[2] ); 00117 glVertex3f( HalfDimensions[0], HalfDimensions[1], HalfDimensions[2] ); 00118 glColor4f( ColorOfWallXn[0], ColorOfWallXn[1], ColorOfWallXn[2], ColorOfWallXn[3] ); 00119 glVertex3f( -HalfDimensions[0], -HalfDimensions[1], -HalfDimensions[2] ); 00120 glVertex3f( -HalfDimensions[0], -HalfDimensions[1], HalfDimensions[2] ); 00121 glVertex3f( -HalfDimensions[0], HalfDimensions[1], HalfDimensions[2] ); 00122 glVertex3f( -HalfDimensions[0], HalfDimensions[1], -HalfDimensions[2] ); 00123 glEnd(); 00124 glPopMatrix(); 00125 glPopAttrib(); 00126 } 00127 //----------------------------------------------------------------------------- 00128 #endif // OpenGL 00129 //============================================================================= 00130 00131 00132 //============================================================================= 00133 END_NAMESPACE_TAPs 00134 //34567890123456789012345678901234567890123456789012345678901234567890123456789 00135 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----