Main Page   Namespace List   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

ExCMap Class Reference

#include <ExCMap.h>


Public Methods

 ExCMap (void)
 ~ExCMap (void)
void ShowSkybox (void)
void HideSkybox (void)
void ShowMesh (void)
void HideMesh (void)
void EnableOctree (void)
void DisableOctree (void)
void ShowOctreeSubdivision (void)
void HideOctreeSubdivision (void)
void SetNumberMesh (long NumberMesh)
long GetNumberMesh (void)
int GetRenderMode (void)
GLuint GetGlListId (void)
void SetManagerTexture (ExManagerTexture *Texture)
bool LoadMap (const char *FileName)
void Draw (void)

Data Fields

char * m_STextureBoxNameTop
char * m_STextureBoxNameBottom
char * m_STextureBoxNameFront
char * m_STextureBoxNameBack
char * m_STextureBoxNameLeft
char * m_STextureBoxNameRight
std::ostrstream * Consol
void(* WriteToConsol )(const char *Label)

Protected Methods

void DrawAllMesh (void)
void DrawMeshInFrustrum (void)
void BuildSkyBox (void)
void BuildOctree (void)
void BuilList (void)
void BuildVertexArrays (void)

Protected Attributes

ExManagerTextureManagerTexture
std::vector< ExCVertexm_VecVertex
std::vector< ExCVertex
>::iterator 
m_ItVecVertex
std::vector< ExCMeshm_VecMesh
std::vector< ExCMesh >::iterator m_ItVecMesh
long m_NumberMesh
long m_NumberVertex
int m_RenderMode
GLuint m_GlListId
GLuint m_GlSkyBoxListId
bool m_ShowSkybox
bool m_ShowMesh
bool m_OctreeState
bool m_ShowOctreeSubdivision
ExCOctree m_Octree
ExCFrustum Frustrum


Constructor & Destructor Documentation

ExCMap void   
 

Definition at line 26 of file ExCMap.cpp.

References m_OctreeState, m_ShowMesh, m_ShowOctreeSubdivision, m_ShowSkybox, m_VecMesh, and m_VecVertex.

00027 {
00028         m_ShowSkybox=true;
00029         m_ShowMesh=true;
00030         m_OctreeState=false;
00031         m_ShowOctreeSubdivision=false;
00032 #ifdef UNIX_SRC
00033         // This is very awfull but it segfault without it
00034         m_VecMesh.reserve (1000);
00035         m_VecVertex.reserve (1000);
00036 #endif
00037 }

~ExCMap void   
 

Definition at line 39 of file ExCMap.cpp.

00040 {
00041 }


Member Function Documentation

void BuildOctree void    [protected]
 

Definition at line 216 of file ExCMap.cpp.

References ExCOctree::Build(), Guard, m_Octree, m_VecMesh, ManagerTexture, ExCOctree::SetManagerTexture(), and UnGuard.

Referenced by LoadMap().

00217 {
00218 Guard(void ExMap::BuildOctree(void))
00219         m_Octree.SetManagerTexture(ManagerTexture);
00220         m_Octree.Build(m_VecMesh);
00221 UnGuard
00222 }

void BuildSkyBox void    [protected]
 

Definition at line 43 of file ExCMap.cpp.

References Guard, m_GlSkyBoxListId, m_STextureBoxNameBack, m_STextureBoxNameBottom, m_STextureBoxNameFront, m_STextureBoxNameLeft, m_STextureBoxNameRight, m_STextureBoxNameTop, ManagerTexture, ExManagerTexture::SetActiveTexture(), and UnGuard.

Referenced by LoadMap().

00044 {
00045 Guard(void ExMap::BuildSkyBox(void))
00046                 
00047                 glDeleteLists(m_GlSkyBoxListId,1);      //delete old list
00048                 m_GlSkyBoxListId=glGenLists(1); //Ask for a new free list
00049                 glNewList(m_GlSkyBoxListId,GL_COMPILE);
00050 
00051                 glEnable(GL_TEXTURE_2D);
00052                 glDisable(GL_LIGHTING);
00053                 ManagerTexture->SetActiveTexture(m_STextureBoxNameFront);
00054                 glBegin(GL_QUADS);
00055                         // Front Face
00056                         glColor4f(1, 1, 1, 1);
00057                         glTexCoord2f(1.0f, 1.0f); glVertex3f(-500.0f,  500.0f,  500.0f);
00058                         glTexCoord2f(0.0f, 1.0f); glVertex3f( 500.0f,  500.0f,  500.0f);
00059                         glTexCoord2f(0.0f, 0.0f); glVertex3f( 500.0f, -500.0f,  500.0f);
00060                         glTexCoord2f(1.0f, 0.0f); glVertex3f(-500.0f, -500.0f,  500.0f);
00061                 glEnd();
00062                 ManagerTexture->SetActiveTexture(m_STextureBoxNameBack);
00063                 glBegin(GL_QUADS);
00064                         // Back Face
00065                         glTexCoord2f(1.0f, 0.0f); glVertex3f( 500.0f, -500.0f, -500.0f);
00066                         glTexCoord2f(1.0f, 1.0f); glVertex3f( 500.0f,  500.0f, -500.0f);
00067                         glTexCoord2f(0.0f, 1.0f); glVertex3f(-500.0f,  500.0f, -500.0f);
00068                         glTexCoord2f(0.0f, 0.0f); glVertex3f(-500.0f, -500.0f, -500.0f);
00069                 glEnd();
00070                 ManagerTexture->SetActiveTexture(m_STextureBoxNameTop);
00071                 glBegin(GL_QUADS);
00072                         // Top Face
00073                         glTexCoord2f(0.0f, 1.0f); glVertex3f( 500.0f,  500.0f, -500.0f);
00074                         glTexCoord2f(0.0f, 0.0f); glVertex3f( 500.0f,  500.0f,  500.0f);
00075                         glTexCoord2f(1.0f, 0.0f); glVertex3f(-500.0f,  500.0f,  500.0f);
00076                         glTexCoord2f(1.0f, 1.0f); glVertex3f(-500.0f,  500.0f, -500.0f);
00077                 glEnd();
00078                 ManagerTexture->SetActiveTexture(m_STextureBoxNameBottom);
00079                 glBegin(GL_QUADS);
00080                         // Bottom Face
00081             glTexCoord2f(1.0f, 1.0f); glVertex3f(-500.0f, -500.0f,  500.0f);
00082                         glTexCoord2f(0.0f, 1.0f); glVertex3f( 500.0f, -500.0f,  500.0f);
00083                         glTexCoord2f(0.0f, 0.0f); glVertex3f( 500.0f, -500.0f, -500.0f);
00084                         glTexCoord2f(1.0f, 0.0f); glVertex3f(-500.0f, -500.0f, -500.0f);
00085                 glEnd();
00086                 ManagerTexture->SetActiveTexture(m_STextureBoxNameRight);
00087                 glBegin(GL_QUADS);
00088                         // Right face
00089                         glTexCoord2f(1.0f, 0.0f); glVertex3f( 500.0f, -500.0f,  500.0f);
00090                         glTexCoord2f(1.0f, 1.0f); glVertex3f( 500.0f,  500.0f,  500.0f);
00091                         glTexCoord2f(0.0f, 1.0f); glVertex3f( 500.0f,  500.0f, -500.0f);
00092                         glTexCoord2f(0.0f, 0.0f); glVertex3f( 500.0f, -500.0f, -500.0f);
00093                 glEnd();
00094                 ManagerTexture->SetActiveTexture(m_STextureBoxNameLeft);
00095                 glBegin(GL_QUADS);
00096                 // Left Face
00097                         glTexCoord2f(1.0f, 1.0f); glVertex3f(-500.0f,  500.0f, -500.0f);
00098                         glTexCoord2f(0.0f, 1.0f); glVertex3f(-500.0f,  500.0f,  500.0f);
00099                         glTexCoord2f(0.0f, 0.0f); glVertex3f(-500.0f, -500.0f,  500.0f);
00100                         glTexCoord2f(1.0f, 0.0f); glVertex3f(-500.0f, -500.0f, -500.0f);
00101 
00102                 glEnd();
00103                 glDisable(GL_TEXTURE_2D);
00104                 glEnable(GL_LIGHTING);
00105 
00106                 glEndList();
00107 UnGuard
00108 }

void BuildVertexArrays void    [protected]
 

Definition at line 224 of file ExCMap.cpp.

References Guard, and UnGuard.

Referenced by LoadMap().

00225 {
00226 Guard(void ExMap::BuildVertexArrays(void))
00227         /*int i=0;
00228         float   *g_vertexArray;    // vertex array
00229         //float   *g_colorArray;     // color array
00230         float   *g_texcoordArray;  // texture array
00231 
00232         g_vertexArray= new float[m_VecMesh.size()*3][3];
00233         //g_colorArray=  new float[m_VecMesh.size()*3][3];
00234         g_texcoordArray= new float[m_VecMesh.size()*3][2];
00235 
00236         for(m_ItVecMesh=m_VecMesh.begin();m_ItVecMesh!=m_VecMesh.end();++m_ItVecMesh)
00237         {
00238                 //ManagerTexture->SetActiveTexture(m_ItVecMesh->GetMaterial());
00239                 
00240                 g_texcoordArray[i][0]=m_ItVecMesh->A.GetU(); 
00241                 g_texcoordArray[i][1]=m_ItVecMesh->A.GetV();
00242 
00243                 g_vertexArray[i][0]=m_ItVecMesh->A.GetX();
00244                 g_vertexArray[i][0]=m_ItVecMesh->A.GetY();
00245                 g_vertexArray[i][0]=m_ItVecMesh->A.GetZ();
00246                 
00247                 g_texcoordArray[i+1][0]=m_ItVecMesh->B.GetU();
00248                 g_texcoordArray[i+1][1]=m_ItVecMesh->B.GetV();
00249                 
00250                 g_vertexArray[i+1][0]=m_ItVecMesh->B.GetX();
00251                 g_vertexArray[i+1][0]=m_ItVecMesh->B.GetY();
00252                 g_vertexArray[i+1][0]=m_ItVecMesh->B.GetZ();
00253 
00254                 g_texcoordArray[i+2][0]=m_ItVecMesh->C.GetU();
00255                 g_texcoordArray[i+2][1]=m_ItVecMesh->C.GetV();
00256                 
00257                 g_vertexArray[i+2][0]=m_ItVecMesh->C.GetX();
00258                 g_vertexArray[i+2][0]=m_ItVecMesh->C.GetY();
00259                 g_vertexArray[i+2][0]=m_ItVecMesh->C.GetZ();
00260                 
00261                 i++;
00262         }
00263         // enable the vertex arrays being used
00264         glEnableClientState(GL_VERTEX_ARRAY);
00265         //glEnableClientState(GL_COLOR_ARRAY);
00266         glEnableClientState(GL_TEXTURE_COORD_ARRAY);
00267           // pass the pointers to OpenGL
00268         glVertexPointer(3, GL_FLOAT, 0, g_vertexArray);
00269         //glColorPointer(3, GL_FLOAT, 0, g_colorArray);
00270         glTexCoordPointer(2, GL_FLOAT, 0, g_texcoordArray);*/
00271 UnGuard
00272 }

void BuilList void    [protected]
 

Definition at line 185 of file ExCMap.cpp.

References Guard, m_GlListId, m_ItVecMesh, m_VecMesh, ManagerTexture, ExManagerTexture::SetActiveTexture(), and UnGuard.

Referenced by LoadMap().

00186 {
00187 Guard(void ExMap::BuilList(void))
00188         m_GlListId=glGenLists(1);
00189         glNewList(m_GlListId,GL_COMPILE);
00190                 glColor3f(1.0f, 1.0f, 1.0f);
00191                 glDisable(GL_LIGHTING);
00192                 glEnable(GL_TEXTURE_2D);
00193                 int i=0;
00194                 
00195                 for(m_ItVecMesh=m_VecMesh.begin();m_ItVecMesh!=m_VecMesh.end();++m_ItVecMesh)
00196                 {
00197                         ManagerTexture->SetActiveTexture(m_ItVecMesh->GetMaterial());
00198                         glBegin(GL_TRIANGLES);
00199                         glTexCoord2f(m_ItVecMesh->A.GetU(), m_ItVecMesh->A.GetV());
00200                         glVertex3f(m_ItVecMesh->A.GetX(),m_ItVecMesh->A.GetY(),m_ItVecMesh->A.GetZ());
00201                         glTexCoord2f(m_ItVecMesh->B.GetU(), m_ItVecMesh->B.GetV());
00202                         glVertex3f(m_ItVecMesh->B.GetX(),m_ItVecMesh->B.GetY(),m_ItVecMesh->B.GetZ());
00203                         glTexCoord2f(m_ItVecMesh->C.GetU(), m_ItVecMesh->C.GetV());
00204                         glVertex3f(m_ItVecMesh->C.GetX(),m_ItVecMesh->C.GetY(),m_ItVecMesh->C.GetZ());
00205                         glEnd();
00206                         i++;
00207                 }
00208                 
00209                 glEnable(GL_LIGHTING);
00210                 glDisable(GL_TEXTURE_2D);
00211         glEndList();
00212 UnGuard
00213 }

void DisableOctree void    [inline]
 

Definition at line 98 of file ExCMap.h.

References m_OctreeState.

Referenced by ExManagerMap::DisableOctree().

00098 {m_OctreeState=false;}

void Draw void   
 

Definition at line 164 of file ExCMap.cpp.

References DrawAllMesh(), DrawMeshInFrustrum(), Guard, m_GlSkyBoxListId, and UnGuard.

Referenced by ExManagerMap::Draw().

00165 {
00166 Guard(void ExMap::Draw(void))
00167         if(m_ShowSkybox)glCallList(m_GlSkyBoxListId);
00168         glPushMatrix();
00169         glRotatef(-90,1.0f,0.0f,0.0f);
00170         if(m_ShowMesh)
00171         {                                                  
00172                 if(m_OctreeState)
00173                 {
00174                         DrawMeshInFrustrum();   
00175                 }else
00176                 {
00177                         DrawAllMesh();
00178                 }
00179         }
00180         glPopMatrix();
00181 
00182 UnGuard
00183 }

void DrawAllMesh void    [protected]
 

Definition at line 110 of file ExCMap.cpp.

References Guard, m_GlListId, and UnGuard.

Referenced by Draw().

00111 {
00112 Guard(void ExMap::DrawAllMesh(void))
00113         glCallList(m_GlListId);
00114 UnGuard
00115 }

void DrawMeshInFrustrum void    [protected]
 

Definition at line 117 of file ExCMap.cpp.

References ExCFrustum::CalculateFrustum(), Frustrum, Guard, m_ItVecMesh, m_VecMesh, ManagerTexture, ExCFrustum::PointInFrustum(), ExManagerTexture::SetActiveTexture(), and UnGuard.

Referenced by Draw().

00118 {
00119 Guard(void ExMap::DrawMeshInFrustrum(void))
00120         //DrawAllMesh();
00121         //m_Octree.Draw();
00122         Frustrum.CalculateFrustum();
00123         glColor3f(1.0f, 1.0f, 1.0f);
00124         glDisable(GL_LIGHTING);
00125         glEnable(GL_TEXTURE_2D);
00126         int i=0;
00127         int pointinfrustrum=0;
00128 
00129         for(m_ItVecMesh=m_VecMesh.begin();m_ItVecMesh!=m_VecMesh.end();++m_ItVecMesh)
00130         {
00131                 ManagerTexture->SetActiveTexture(m_ItVecMesh->GetMaterial());
00132                 if(Frustrum.PointInFrustum(m_ItVecMesh->A.GetX(),m_ItVecMesh->A.GetY(),m_ItVecMesh->A.GetZ()))
00133                 {
00134                         pointinfrustrum++;
00135                 }
00136                 if(Frustrum.PointInFrustum(m_ItVecMesh->B.GetX(),m_ItVecMesh->B.GetY(),m_ItVecMesh->B.GetZ()))
00137                 {
00138                         pointinfrustrum++;
00139                 }
00140                 if(Frustrum.PointInFrustum(m_ItVecMesh->C.GetX(),m_ItVecMesh->C.GetY(),m_ItVecMesh->C.GetZ()))
00141                 {
00142                         pointinfrustrum++;
00143                 }
00144                 
00145                 if(pointinfrustrum>1)
00146                 {
00147                         glBegin(GL_TRIANGLES);
00148                                 glTexCoord2f(m_ItVecMesh->A.GetU(), m_ItVecMesh->A.GetV());
00149                                 glVertex3f(m_ItVecMesh->A.GetX(),m_ItVecMesh->A.GetY(),m_ItVecMesh->A.GetZ());
00150                                 glTexCoord2f(m_ItVecMesh->B.GetU(), m_ItVecMesh->B.GetV());
00151                                 glVertex3f(m_ItVecMesh->B.GetX(),m_ItVecMesh->B.GetY(),m_ItVecMesh->B.GetZ());
00152                                 glTexCoord2f(m_ItVecMesh->C.GetU(), m_ItVecMesh->C.GetV());
00153                                 glVertex3f(m_ItVecMesh->C.GetX(),m_ItVecMesh->C.GetY(),m_ItVecMesh->C.GetZ());
00154                         glEnd();
00155                 }
00156                 i++;
00157                 pointinfrustrum=0;
00158         }       
00159         glEnable(GL_LIGHTING);
00160         glDisable(GL_TEXTURE_2D);
00161 UnGuard
00162 }

void EnableOctree void    [inline]
 

Definition at line 97 of file ExCMap.h.

References m_OctreeState.

Referenced by ExManagerMap::EnableOctree().

00097 {m_OctreeState=true;}

GLuint GetGlListId void    [inline]
 

Definition at line 109 of file ExCMap.h.

References m_GlListId.

00109 {return m_GlListId;}

long GetNumberMesh void    [inline]
 

Definition at line 107 of file ExCMap.h.

References m_NumberMesh.

00107 {return m_NumberMesh;}

int GetRenderMode void    [inline]
 

Definition at line 108 of file ExCMap.h.

References m_RenderMode.

00108 {return m_RenderMode;}

void HideMesh void    [inline]
 

Definition at line 96 of file ExCMap.h.

References m_ShowMesh.

Referenced by ExManagerMap::HideMesh().

00096 {m_ShowMesh=false;}

void HideOctreeSubdivision void    [inline]
 

Definition at line 100 of file ExCMap.h.

References m_ShowOctreeSubdivision.

Referenced by ExManagerMap::HideOctreeSubdivision().

00100 {m_ShowOctreeSubdivision=false;}

void HideSkybox void    [inline]
 

Definition at line 94 of file ExCMap.h.

References m_ShowSkybox.

Referenced by ExManagerMap::HideSkybox().

00094 {m_ShowSkybox=false;}

bool LoadMap const char *    FileName
 

Definition at line 274 of file ExCMap.cpp.

References ExCMesh::A, ExManagerTexture::AddTexture(), ExCMesh::B, BuildOctree(), BuildSkyBox(), BuildVertexArrays(), BuilList(), ExCMesh::C, Consol, Guard, LoadMap(), ExCMesh::m_AB, ExCMesh::m_BC, ExCMesh::m_CA, ExCMesh::m_MeshNumber, m_NumberMesh, m_NumberVertex, ExCMesh::m_Smoothing, m_STextureBoxNameBack, m_STextureBoxNameBottom, m_STextureBoxNameFront, m_STextureBoxNameLeft, m_STextureBoxNameRight, m_STextureBoxNameTop, m_VecMesh, m_VecVertex, ManagerTexture, PREFIX, ExManagerTexture::SetActiveTexture(), ExCMesh::SetMaterial(), ExCVertex::SetU(), ExCVertex::SetV(), ExCVertex::SetX(), ExCVertex::SetY(), ExCVertex::SetZ(), and UnGuard.

Referenced by ExManagerMap::LoadMap(), and LoadMap().

00275 {
00276 Guard(void ExCMap::LoadMap(const char *FileName))
00277         char                    ch;
00278         int                             RetVal; 
00279         std::string             StBuffer;
00280         char                    Buff[255];
00281         int                             FileSize;
00282         ExCVertex               VertexBuff;
00283         ExCMesh                 MeshBuff;
00284         int                             MeshNumber=0;
00285         
00286         FILE *MapFile;
00287         memset(Buff,0,255);
00288 #ifdef UNIX_SRC
00289         sprintf (Buff, PREFIX "/ExNihilo/Data/Modeles/%s", FileName);
00290 #else
00291         sprintf(Buff,"../Data/Modeles/%s",FileName);
00292 #endif
00293         MapFile=fopen(Buff,"r");
00294         
00295         if(!MapFile)
00296         {
00297                 *Consol<<"File not found:"<<Buff<<std::endl;
00298                 return false;
00299         }else
00300         {       
00301                 *Consol<<"Loading map File :"<<FileName<<std::endl;
00302 
00303                 fseek(MapFile,0,SEEK_END);
00304                 FileSize=ftell(MapFile);
00305                 //Start of file
00306                 fseek(MapFile,0,SEEK_SET);
00307                 do
00308                 {
00309                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00310                 }while(ch!='#');
00311                 //reading file type;
00312                 do
00313                 {
00314                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00315                         StBuffer=StBuffer+ch;   
00316                 }while(ch!='#');
00317                 if(strcmp(StBuffer.data(),"map#")==0)
00318                 {
00319                 //read top skybox texture
00320                         StBuffer.erase(StBuffer.begin(),StBuffer.end());
00321                         do
00322                         {
00323                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00324                                         StBuffer=StBuffer+ch;
00325                         }while(ch!='#');
00326                         StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00327                         StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00328                         m_STextureBoxNameTop=new char[strlen(StBuffer.data()-5)];
00329                         memset(m_STextureBoxNameTop,0,strlen(StBuffer.data()-5));
00330                         StBuffer.copy(m_STextureBoxNameTop,strlen(StBuffer.data())-4,0);
00331                 //read bottom skybox texture
00332                         StBuffer.erase(StBuffer.begin(),StBuffer.end());
00333                         do
00334                         {
00335                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00336                                         StBuffer=StBuffer+ch;
00337                         }while(ch!='#');
00338                         StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00339                         StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00340                         m_STextureBoxNameBottom=new char[strlen(StBuffer.data()-5)];
00341                         memset(m_STextureBoxNameBottom,0,strlen(StBuffer.data()-5));
00342                         StBuffer.copy(m_STextureBoxNameBottom,strlen(StBuffer.data())-4,0);
00343                 //read front skybox texture
00344                         StBuffer.erase(StBuffer.begin(),StBuffer.end());
00345                         do
00346                         {
00347                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00348                                         StBuffer=StBuffer+ch;
00349                         }while(ch!='#');
00350                         StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00351                         StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00352                         m_STextureBoxNameFront=new char[strlen(StBuffer.data()-5)];
00353                         memset(m_STextureBoxNameFront,0,strlen(StBuffer.data()-5));
00354                         StBuffer.copy(m_STextureBoxNameFront,strlen(StBuffer.data())-4,0);
00355                 //read back skybox texture
00356                         StBuffer.erase(StBuffer.begin(),StBuffer.end());
00357                         do
00358                         {
00359                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00360                                         StBuffer=StBuffer+ch;
00361                         }while(ch!='#');
00362                         StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00363                         StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00364                         m_STextureBoxNameBack=new char[strlen(StBuffer.data()-5)];
00365                         memset(m_STextureBoxNameBack,0,strlen(StBuffer.data()-5));
00366                         StBuffer.copy(m_STextureBoxNameBack,strlen(StBuffer.data())-4,0);
00367                 //read left skybox texture
00368                         StBuffer.erase(StBuffer.begin(),StBuffer.end());
00369                         do
00370                         {
00371                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00372                                         StBuffer=StBuffer+ch;
00373                         }while(ch!='#');
00374                         StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00375                         StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00376                         m_STextureBoxNameLeft=new char[strlen(StBuffer.data()-5)];
00377                         memset(m_STextureBoxNameLeft,0,strlen(StBuffer.data()-5));
00378                         StBuffer.copy(m_STextureBoxNameLeft,strlen(StBuffer.data())-4,0);
00379                 //read right skybox texture
00380                         StBuffer.erase(StBuffer.begin(),StBuffer.end());
00381                         do
00382                         {
00383                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00384                                         StBuffer=StBuffer+ch;
00385                         }while(ch!='#');
00386                         StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00387                         StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00388                         m_STextureBoxNameRight=new char[strlen(StBuffer.data()-5)];
00389                         memset(m_STextureBoxNameRight,0,strlen(StBuffer.data()-5));
00390                         StBuffer.copy(m_STextureBoxNameRight,strlen(StBuffer.data())-4,0);
00391                         
00392                 // read number of vertex
00393                         StBuffer.erase(StBuffer.begin(),StBuffer.end());
00394                         do
00395                         {
00396                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00397                                         StBuffer=StBuffer+ch;
00398                         }while(ch!='#');
00399                         StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00400                         StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00401                         try
00402                         {
00403                                 m_NumberVertex=atol(StBuffer.data());
00404                         }catch(...)
00405                         {
00406                                 m_NumberVertex=0;
00407                         }
00408                 // read vertex
00409 #ifdef UNIX_SRC
00410                         m_VecVertex.resize (m_NumberVertex + 2);
00411 #endif
00412                         std::cout << __LINE__ << std::endl;
00413                         for(int i=0;i<m_NumberVertex;i++)
00414                         {
00415                                 //read x
00416                                 StBuffer.erase(StBuffer.begin(),StBuffer.end());
00417                                 do
00418                                 {
00419                                                 RetVal=fread(&ch,sizeof(char),1,MapFile);
00420                                                 StBuffer=StBuffer+ch;
00421                                 }while(ch!='#');
00422                                 StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00423                                 StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00424                                 try
00425                                 {
00426                                         VertexBuff.SetX(atof(StBuffer.data()));
00427                                         //cout<<"X:"<<atof(StBuffer.data());
00428                                 }catch(...)
00429                                 {
00430                                         m_NumberMesh=0;
00431                                 }
00432                         //read y
00433                                 StBuffer.erase(StBuffer.begin(),StBuffer.end());
00434                                 do
00435                                 {
00436                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00437                                         StBuffer=StBuffer+ch;
00438                                 }while(ch!='#');
00439                                 StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00440                                 //StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00441                                 try
00442                                 {
00443                                         VertexBuff.SetY(atof(StBuffer.data()));
00444                                         //cout<<" Y:"<<atof(StBuffer.data());
00445                                 }catch(...)
00446                                 {
00447                                         VertexBuff.SetY(0);
00448                                 }
00449                         //read z
00450                                 StBuffer.erase(StBuffer.begin(),StBuffer.end());
00451                                 do
00452                                 {
00453                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00454                                         StBuffer=StBuffer+ch;
00455                                 }while(ch!='#');
00456                                 StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00457                                 //StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00458                                 try
00459                                 {
00460                                         VertexBuff.SetZ(atof(StBuffer.data()));
00461                                         //cout<<" Z:"<<atof(StBuffer.data())<<endl;
00462                                 }catch(...)
00463                                 {
00464                                         VertexBuff.SetZ(0);
00465                                 }
00466                         //read u
00467                                 StBuffer.erase(StBuffer.begin(),StBuffer.end());
00468                                 do
00469                                 {
00470                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00471                                         StBuffer=StBuffer+ch;
00472                                 }while(ch!='#');
00473                                 StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00474                                 StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00475                                 try
00476                                 {
00477                                         VertexBuff.SetU(atof(StBuffer.data()));
00478                                 }catch(...)
00479                                 {
00480                                         VertexBuff.SetU(0);
00481                                 }
00482                         //read v
00483                                 StBuffer.erase(StBuffer.begin(),StBuffer.end());
00484                                 do
00485                                 {
00486                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00487                                         StBuffer=StBuffer+ch;
00488                                 }while(ch!='#');
00489                                 StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00490                                 StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00491                                 try
00492                                 {
00493                                         VertexBuff.SetV(atof(StBuffer.data()));
00494                                 }catch(...)
00495                                 {
00496                                         VertexBuff.SetV(0);
00497                                 }
00498                                 m_VecVertex.push_back(VertexBuff);                              
00499                         }
00500                 // read number of mesh
00501                         StBuffer.erase(StBuffer.begin(),StBuffer.end());
00502                         do
00503                         {
00504                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00505                                         StBuffer=StBuffer+ch;
00506                         }while(ch!='#');
00507                         StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00508                         StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00509                         try
00510                         {
00511                                 m_NumberMesh=atol(StBuffer.data());
00512                         }catch(...)
00513                         {
00514                                 m_NumberMesh=0;
00515                         }
00516                 // read mesh
00517 #ifdef UNIX_SRC
00518                         m_VecMesh.resize (m_NumberMesh + 2);
00519 #endif
00520                         for(int j=0;j<m_NumberMesh;j++) {
00521                         //read vertex a number
00522                                 StBuffer.erase(StBuffer.begin(),StBuffer.end());
00523                                 do {
00524                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00525                                         StBuffer=StBuffer+ch;
00526                                 } while(ch!='#');
00527                                 StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00528                                 StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00529                                 try {
00530                                         MeshBuff.A=m_VecVertex.at(atoi(StBuffer.data()));
00531                                 } catch(...) {
00532                                         MeshBuff.A=(ExCVertex(0.0f,0.0f,0.0f));
00533                                 }
00534                         //read vertex b number
00535                                 StBuffer.erase(StBuffer.begin(),StBuffer.end());
00536                                 do {
00537                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00538                                         StBuffer=StBuffer+ch;
00539                                 } while(ch!='#');
00540                                 StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00541                                 
00542                                 try {
00543                                         MeshBuff.B=m_VecVertex.at(atoi(StBuffer.data()));
00544                                 } catch(...) {
00545                                         MeshBuff.B=(ExCVertex(0.0f,0.0f,0.0f));
00546                                 }
00547                         //read vertex c number
00548                                 StBuffer.erase(StBuffer.begin(),StBuffer.end());
00549                                 do {
00550                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00551                                         StBuffer=StBuffer+ch;
00552                                 } while(ch!='#');
00553                                 StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00554                                 try {
00555                                         MeshBuff.C=m_VecVertex.at(atoi(StBuffer.data()));
00556                                 } catch(...) {
00557                                         MeshBuff.C=(ExCVertex(0.0f,0.0f,0.0f));
00558                                 }
00559                         //read AB
00560                                 StBuffer.erase(StBuffer.begin(),StBuffer.end());
00561                                 do {
00562                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00563                                         StBuffer=StBuffer+ch;
00564                                 } while(ch!='#');
00565                                 StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00566                                 try {
00567                                         MeshBuff.m_AB=atoi(StBuffer.data());
00568                                 } catch(...) {
00569                                         MeshBuff.m_AB=0;
00570                                 }
00571                         //read BC
00572                                 StBuffer.erase(StBuffer.begin(),StBuffer.end());
00573                                 do {
00574                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00575                                         StBuffer=StBuffer+ch;
00576                                 } while(ch!='#');
00577                                 StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00578                                 try {
00579                                         MeshBuff.m_BC=atoi(StBuffer.data());
00580                                 } catch(...) {
00581                                         MeshBuff.m_BC=0;
00582                                 }
00583                         //read CA
00584                                 StBuffer.erase(StBuffer.begin(),StBuffer.end());
00585                                 do {
00586                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00587                                         StBuffer=StBuffer+ch;
00588                                 } while(ch!='#');
00589                                 StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00590                                 try {
00591                                         MeshBuff.m_CA=atoi(StBuffer.data());
00592                                 } catch(...) {
00593                                         MeshBuff.m_CA=0;
00594                                 }
00595                         //read material
00596                                 StBuffer.erase(StBuffer.begin(),StBuffer.end());
00597                                 do {
00598                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00599                                         StBuffer=StBuffer+ch;
00600                                 } while(ch!='#');
00601                                 StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00602                                 MeshBuff.SetMaterial(StBuffer.data());
00603                                 ManagerTexture->AddTexture(StBuffer.data());
00604                         //read smothing
00605                                 StBuffer.erase(StBuffer.begin(),StBuffer.end());
00606                                 do {
00607                                         RetVal=fread(&ch,sizeof(char),1,MapFile);
00608                                         StBuffer=StBuffer+ch;
00609                                 } while(ch!='#');
00610                                 StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00611                                 StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00612                                 try {
00613                                         MeshBuff.m_Smoothing=atoi(StBuffer.data());
00614                                 } catch(...) {
00615                                         MeshBuff.m_Smoothing=0;
00616                                 }
00617                                 MeshBuff.m_MeshNumber=MeshNumber;
00618                                 MeshNumber++;
00619                                 m_VecMesh.push_back(MeshBuff);
00620                         }
00621                         
00622                 }else
00623                 {
00624                         *Consol<<FileName<<"is not a valide map file"<<std::endl;
00625                         return false;
00626                 }
00627                 
00628                 fclose(MapFile);
00629                 ManagerTexture->AddTexture(m_STextureBoxNameTop);
00630                 ManagerTexture->SetActiveTexture(m_STextureBoxNameTop);
00631                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
00632                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
00633                 ManagerTexture->AddTexture(m_STextureBoxNameBottom);
00634                 ManagerTexture->SetActiveTexture(m_STextureBoxNameBottom);
00635                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
00636                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
00637                 ManagerTexture->AddTexture(m_STextureBoxNameFront);
00638                 ManagerTexture->SetActiveTexture(m_STextureBoxNameFront);
00639                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
00640                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
00641                 ManagerTexture->AddTexture(m_STextureBoxNameBack);
00642                 ManagerTexture->SetActiveTexture(m_STextureBoxNameBack);
00643                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
00644                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
00645                 ManagerTexture->AddTexture(m_STextureBoxNameLeft);
00646                 ManagerTexture->SetActiveTexture(m_STextureBoxNameLeft);
00647                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
00648                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
00649                 ManagerTexture->AddTexture(m_STextureBoxNameRight);
00650                 ManagerTexture->SetActiveTexture(m_STextureBoxNameRight);
00651                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
00652                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
00653                 BuildOctree();
00654                 BuilList();
00655                 BuildVertexArrays();
00656                 BuildSkyBox();
00657                 *Consol<<FileName<<" map file loaded with "<<m_NumberVertex<<" vertex and "<<m_NumberMesh<<" faces"<<std::endl;
00658         }
00659         return true;
00660 UnGuard
00661 }

void SetManagerTexture ExManagerTexture   Texture [inline]
 

Definition at line 110 of file ExCMap.h.

Referenced by ExManagerMap::LoadMap().

00110 {ManagerTexture=Texture;}

void SetNumberMesh long    NumberMesh [inline]
 

Definition at line 105 of file ExCMap.h.

References m_NumberMesh.

00105 {m_NumberMesh=NumberMesh;}

void ShowMesh void    [inline]
 

Definition at line 95 of file ExCMap.h.

References m_ShowMesh.

Referenced by ExManagerMap::ShowMesh().

00095 {m_ShowMesh=true;}

void ShowOctreeSubdivision void    [inline]
 

Definition at line 99 of file ExCMap.h.

References m_ShowOctreeSubdivision.

Referenced by ExManagerMap::ShowOctreeSubdivision().

void ShowSkybox void    [inline]
 

Definition at line 93 of file ExCMap.h.

References m_ShowSkybox.

Referenced by ExManagerMap::ShowSkybox().

00093 {m_ShowSkybox=true;}


Field Documentation

std::ostrstream* Consol
 

Definition at line 102 of file ExCMap.h.

Referenced by ExManagerMap::LoadMap(), and LoadMap().

ExCFrustum Frustrum [protected]
 

Definition at line 76 of file ExCMap.h.

Referenced by DrawMeshInFrustrum().

GLuint m_GlListId [protected]
 

Definition at line 56 of file ExCMap.h.

Referenced by BuilList(), DrawAllMesh(), and GetGlListId().

GLuint m_GlSkyBoxListId [protected]
 

Definition at line 57 of file ExCMap.h.

Referenced by BuildSkyBox(), and Draw().

std::vector<ExCMesh>::iterator m_ItVecMesh [protected]
 

Definition at line 49 of file ExCMap.h.

Referenced by BuilList(), and DrawMeshInFrustrum().

std::vector<ExCVertex>::iterator m_ItVecVertex [protected]
 

Definition at line 47 of file ExCMap.h.

long m_NumberMesh [protected]
 

Definition at line 52 of file ExCMap.h.

Referenced by GetNumberMesh(), LoadMap(), and SetNumberMesh().

long m_NumberVertex [protected]
 

Definition at line 53 of file ExCMap.h.

Referenced by LoadMap().

ExCOctree m_Octree [protected]
 

Definition at line 75 of file ExCMap.h.

Referenced by BuildOctree().

bool m_OctreeState [protected]
 

Definition at line 61 of file ExCMap.h.

Referenced by DisableOctree(), EnableOctree(), and ExCMap().

int m_RenderMode [protected]
 

Definition at line 54 of file ExCMap.h.

Referenced by GetRenderMode().

bool m_ShowMesh [protected]
 

Definition at line 60 of file ExCMap.h.

Referenced by ExCMap(), HideMesh(), and ShowMesh().

bool m_ShowOctreeSubdivision [protected]
 

Definition at line 62 of file ExCMap.h.

Referenced by ExCMap(), HideOctreeSubdivision(), and ShowOctreeSubdivision().

bool m_ShowSkybox [protected]
 

Definition at line 59 of file ExCMap.h.

Referenced by ExCMap(), HideSkybox(), and ShowSkybox().

char* m_STextureBoxNameBack
 

Definition at line 82 of file ExCMap.h.

Referenced by BuildSkyBox(), and LoadMap().

char* m_STextureBoxNameBottom
 

Definition at line 80 of file ExCMap.h.

Referenced by BuildSkyBox(), and LoadMap().

char* m_STextureBoxNameFront
 

Definition at line 81 of file ExCMap.h.

Referenced by BuildSkyBox(), and LoadMap().

char* m_STextureBoxNameLeft
 

Definition at line 83 of file ExCMap.h.

Referenced by BuildSkyBox(), and LoadMap().

char* m_STextureBoxNameRight
 

Definition at line 84 of file ExCMap.h.

Referenced by BuildSkyBox(), and LoadMap().

char* m_STextureBoxNameTop
 

Definition at line 79 of file ExCMap.h.

Referenced by BuildSkyBox(), and LoadMap().

std::vector<ExCMesh> m_VecMesh [protected]
 

Definition at line 48 of file ExCMap.h.

Referenced by BuildOctree(), BuilList(), DrawMeshInFrustrum(), ExCMap(), and LoadMap().

std::vector<ExCVertex> m_VecVertex [protected]
 

Definition at line 46 of file ExCMap.h.

Referenced by ExCMap(), and LoadMap().

ExManagerTexture* ManagerTexture [protected]
 

Definition at line 44 of file ExCMap.h.

Referenced by BuildOctree(), BuildSkyBox(), BuilList(), DrawMeshInFrustrum(), and LoadMap().

void(* WriteToConsol)(const char *Label)
 

Referenced by ExManagerMap::LoadMap().


The documentation for this class was generated from the following files:
Generated on Tue Aug 6 20:27:20 2002 for ExNihilo by doxygen1.2.17