00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "ExCMap.h"
00025
00026 ExCMap::ExCMap(void)
00027 {
00028 m_ShowSkybox=true;
00029 m_ShowMesh=true;
00030 m_OctreeState=false;
00031 m_ShowOctreeSubdivision=false;
00032 #ifdef UNIX_SRC
00033
00034 m_VecMesh.reserve (1000);
00035 m_VecVertex.reserve (1000);
00036 #endif
00037 }
00038
00039 ExCMap::~ExCMap(void)
00040 {
00041 }
00042
00043 void ExCMap::BuildSkyBox(void)
00044 {
00045 Guard(void ExMap::BuildSkyBox(void))
00046
00047 glDeleteLists(m_GlSkyBoxListId,1);
00048 m_GlSkyBoxListId=glGenLists(1);
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
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
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
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
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
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
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 }
00109
00110 void ExCMap::DrawAllMesh(void)
00111 {
00112 Guard(void ExMap::DrawAllMesh(void))
00113 glCallList(m_GlListId);
00114 UnGuard
00115 }
00116
00117 void ExCMap::DrawMeshInFrustrum(void)
00118 {
00119 Guard(void ExMap::DrawMeshInFrustrum(void))
00120
00121
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 }
00163
00164 void ExCMap::Draw(void)
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 }
00184
00185 void ExCMap::BuilList(void)
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 }
00214
00215
00216 void ExCMap::BuildOctree(void)
00217 {
00218 Guard(void ExMap::BuildOctree(void))
00219 m_Octree.SetManagerTexture(ManagerTexture);
00220 m_Octree.Build(m_VecMesh);
00221 UnGuard
00222 }
00223
00224 void ExCMap::BuildVertexArrays(void)
00225 {
00226 Guard(void ExMap::BuildVertexArrays(void))
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271 UnGuard
00272 }
00273
00274 bool ExCMap::LoadMap(const char *FileName)
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
00306 fseek(MapFile,0,SEEK_SET);
00307 do
00308 {
00309 RetVal=fread(&ch,sizeof(char),1,MapFile);
00310 }while(ch!='#');
00311
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
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
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
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
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
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
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
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
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
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
00428 }catch(...)
00429 {
00430 m_NumberMesh=0;
00431 }
00432
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
00441 try
00442 {
00443 VertexBuff.SetY(atof(StBuffer.data()));
00444
00445 }catch(...)
00446 {
00447 VertexBuff.SetY(0);
00448 }
00449
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
00458 try
00459 {
00460 VertexBuff.SetZ(atof(StBuffer.data()));
00461
00462 }catch(...)
00463 {
00464 VertexBuff.SetZ(0);
00465 }
00466
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
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
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
00517 #ifdef UNIX_SRC
00518 m_VecMesh.resize (m_NumberMesh + 2);
00519 #endif
00520 for(int j=0;j<m_NumberMesh;j++) {
00521
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
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
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
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
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
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
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
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 }