Page principale   Liste des namespaces   Hiérarchie des classes   Liste par ordre alphabétique   Liste des composants   Liste des fichiers   Composants   Déclarations  

Référence de la classe ExCMap

#include <ExCMap.h>


Membres publics

 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)

Attributs Publics

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)

Membres protégés

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

Attributs Protégés

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


Documentation des contructeurs et destructeurs

ExCMap void   
 

Définition à la ligne 26 du fichier ExCMap.cpp.

Références m_OctreeState, m_ShowMesh, m_ShowOctreeSubdivision, m_ShowSkybox, m_VecMesh, et 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   
 

Définition à la ligne 39 du fichier ExCMap.cpp.

00040 {
00041 }


Documentation des méthodes

void BuildOctree void    [protected]
 

Définition à la ligne 216 du fichier ExCMap.cpp.

Références ExCOctree::Build(), Guard, m_Octree, m_VecMesh, ManagerTexture, ExCOctree::SetManagerTexture(), et UnGuard.

Référencé par 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]
 

Définition à la ligne 43 du fichier ExCMap.cpp.

Références Guard, m_GlSkyBoxListId, m_STextureBoxNameBack, m_STextureBoxNameBottom, m_STextureBoxNameFront, m_STextureBoxNameLeft, m_STextureBoxNameRight, m_STextureBoxNameTop, ManagerTexture, ExManagerTexture::SetActiveTexture(), et UnGuard.

Référencé par 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]
 

Définition à la ligne 224 du fichier ExCMap.cpp.

Références Guard, et UnGuard.

Référencé par 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]
 

Définition à la ligne 185 du fichier ExCMap.cpp.

Références Guard, m_GlListId, m_ItVecMesh, m_VecMesh, ManagerTexture, ExManagerTexture::SetActiveTexture(), et UnGuard.

Référencé par 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]
 

Définition à la ligne 98 du fichier ExCMap.h.

Références m_OctreeState.

Référencé par ExManagerMap::DisableOctree().

00098 {m_OctreeState=false;}

void Draw void   
 

Définition à la ligne 164 du fichier ExCMap.cpp.

Références DrawAllMesh(), DrawMeshInFrustrum(), Guard, m_GlSkyBoxListId, et UnGuard.

Référencé par 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]
 

Définition à la ligne 110 du fichier ExCMap.cpp.

Références Guard, m_GlListId, et UnGuard.

Référencé par Draw().

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

void DrawMeshInFrustrum void    [protected]
 

Définition à la ligne 117 du fichier ExCMap.cpp.

Références ExCFrustum::CalculateFrustum(), Frustrum, Guard, m_ItVecMesh, m_VecMesh, ManagerTexture, ExCFrustum::PointInFrustum(), ExManagerTexture::SetActiveTexture(), et UnGuard.

Référencé par 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]
 

Définition à la ligne 97 du fichier ExCMap.h.

Références m_OctreeState.

Référencé par ExManagerMap::EnableOctree().

00097 {m_OctreeState=true;}

GLuint GetGlListId void    [inline]
 

Définition à la ligne 109 du fichier ExCMap.h.

Références m_GlListId.

00109 {return m_GlListId;}

long GetNumberMesh void    [inline]
 

Définition à la ligne 107 du fichier ExCMap.h.

Références m_NumberMesh.

00107 {return m_NumberMesh;}

int GetRenderMode void    [inline]
 

Définition à la ligne 108 du fichier ExCMap.h.

Références m_RenderMode.

00108 {return m_RenderMode;}

void HideMesh void    [inline]
 

Définition à la ligne 96 du fichier ExCMap.h.

Références m_ShowMesh.

Référencé par ExManagerMap::HideMesh().

00096 {m_ShowMesh=false;}

void HideOctreeSubdivision void    [inline]
 

Définition à la ligne 100 du fichier ExCMap.h.

Références m_ShowOctreeSubdivision.

Référencé par ExManagerMap::HideOctreeSubdivision().

00100 {m_ShowOctreeSubdivision=false;}

void HideSkybox void    [inline]
 

Définition à la ligne 94 du fichier ExCMap.h.

Références m_ShowSkybox.

Référencé par ExManagerMap::HideSkybox().

00094 {m_ShowSkybox=false;}

bool LoadMap const char *    FileName
 

Définition à la ligne 274 du fichier ExCMap.cpp.

Références 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(), et UnGuard.

Référencé par ExManagerMap::LoadMap(), et 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]
 

Définition à la ligne 110 du fichier ExCMap.h.

Référencé par ExManagerMap::LoadMap().

00110 {ManagerTexture=Texture;}

void SetNumberMesh long    NumberMesh [inline]
 

Définition à la ligne 105 du fichier ExCMap.h.

Références m_NumberMesh.

00105 {m_NumberMesh=NumberMesh;}

void ShowMesh void    [inline]
 

Définition à la ligne 95 du fichier ExCMap.h.

Références m_ShowMesh.

Référencé par ExManagerMap::ShowMesh().

00095 {m_ShowMesh=true;}

void ShowOctreeSubdivision void    [inline]
 

Définition à la ligne 99 du fichier ExCMap.h.

Références m_ShowOctreeSubdivision.

Référencé par ExManagerMap::ShowOctreeSubdivision().

void ShowSkybox void    [inline]
 

Définition à la ligne 93 du fichier ExCMap.h.

Références m_ShowSkybox.

Référencé par ExManagerMap::ShowSkybox().

00093 {m_ShowSkybox=true;}


Documentation des données imbriquées

std::ostrstream* Consol
 

Définition à la ligne 102 du fichier ExCMap.h.

Référencé par ExManagerMap::LoadMap(), et LoadMap().

ExCFrustum Frustrum [protected]
 

Définition à la ligne 76 du fichier ExCMap.h.

Référencé par DrawMeshInFrustrum().

GLuint m_GlListId [protected]
 

Définition à la ligne 56 du fichier ExCMap.h.

Référencé par BuilList(), DrawAllMesh(), et GetGlListId().

GLuint m_GlSkyBoxListId [protected]
 

Définition à la ligne 57 du fichier ExCMap.h.

Référencé par BuildSkyBox(), et Draw().

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

Définition à la ligne 49 du fichier ExCMap.h.

Référencé par BuilList(), et DrawMeshInFrustrum().

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

Définition à la ligne 47 du fichier ExCMap.h.

long m_NumberMesh [protected]
 

Définition à la ligne 52 du fichier ExCMap.h.

Référencé par GetNumberMesh(), LoadMap(), et SetNumberMesh().

long m_NumberVertex [protected]
 

Définition à la ligne 53 du fichier ExCMap.h.

Référencé par LoadMap().

ExCOctree m_Octree [protected]
 

Définition à la ligne 75 du fichier ExCMap.h.

Référencé par BuildOctree().

bool m_OctreeState [protected]
 

Définition à la ligne 61 du fichier ExCMap.h.

Référencé par DisableOctree(), EnableOctree(), et ExCMap().

int m_RenderMode [protected]
 

Définition à la ligne 54 du fichier ExCMap.h.

Référencé par GetRenderMode().

bool m_ShowMesh [protected]
 

Définition à la ligne 60 du fichier ExCMap.h.

Référencé par ExCMap(), HideMesh(), et ShowMesh().

bool m_ShowOctreeSubdivision [protected]
 

Définition à la ligne 62 du fichier ExCMap.h.

Référencé par ExCMap(), HideOctreeSubdivision(), et ShowOctreeSubdivision().

bool m_ShowSkybox [protected]
 

Définition à la ligne 59 du fichier ExCMap.h.

Référencé par ExCMap(), HideSkybox(), et ShowSkybox().

char* m_STextureBoxNameBack
 

Définition à la ligne 82 du fichier ExCMap.h.

Référencé par BuildSkyBox(), et LoadMap().

char* m_STextureBoxNameBottom
 

Définition à la ligne 80 du fichier ExCMap.h.

Référencé par BuildSkyBox(), et LoadMap().

char* m_STextureBoxNameFront
 

Définition à la ligne 81 du fichier ExCMap.h.

Référencé par BuildSkyBox(), et LoadMap().

char* m_STextureBoxNameLeft
 

Définition à la ligne 83 du fichier ExCMap.h.

Référencé par BuildSkyBox(), et LoadMap().

char* m_STextureBoxNameRight
 

Définition à la ligne 84 du fichier ExCMap.h.

Référencé par BuildSkyBox(), et LoadMap().

char* m_STextureBoxNameTop
 

Définition à la ligne 79 du fichier ExCMap.h.

Référencé par BuildSkyBox(), et LoadMap().

std::vector<ExCMesh> m_VecMesh [protected]
 

Définition à la ligne 48 du fichier ExCMap.h.

Référencé par BuildOctree(), BuilList(), DrawMeshInFrustrum(), ExCMap(), et LoadMap().

std::vector<ExCVertex> m_VecVertex [protected]
 

Définition à la ligne 46 du fichier ExCMap.h.

Référencé par ExCMap(), et LoadMap().

ExManagerTexture* ManagerTexture [protected]
 

Définition à la ligne 44 du fichier ExCMap.h.

Référencé par BuildOctree(), BuildSkyBox(), BuilList(), DrawMeshInFrustrum(), et LoadMap().

void(* WriteToConsol)(const char *Label)
 

Référencé par ExManagerMap::LoadMap().


La documentation associée à cette classe a été générée à partir des fichiers suivants :
Généré le Tue Aug 6 20:25:37 2002 pour ExNihilo par doxygen1.2.17