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

ExCEntite.cpp

Go to the documentation of this file.
00001 /*
00002  * ExNihilo 3D Engine
00003  * 
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; either version 2 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  This program is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU Library General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU General Public License
00015  *  along with this program; if not, write to the Free Software
00016  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00017  *
00018  * Please read AUTHORS file !!!
00019  * 
00020  * $Id: ExCEntite.cpp,v 1.12 2002/07/07 00:35:10 data Exp $
00021  *
00022  */
00023 
00024 #include "ExCEntite.h"
00025 
00026 ExCEntite::ExCEntite(void)
00027 {
00028 Guard(ExCEntite::ExCEntite(void))
00029         ExCObject::ExCObject();
00030         m_RenderMode=RENDER_LINES;
00031         MakeList();
00032 UnGuard
00033 }
00034 
00035 ExCEntite::~ExCEntite(void)
00036 {
00037 Guard(ExCEntite::~ExCEntite(void))
00038 UnGuard
00039 }
00040 
00041 void ExCEntite::Draw(void)
00042 {
00043 Guard(void ExCEntite::Draw(void))
00044 //std::cout<<"Draw "<<m_ObjectName<<" ID:"<<m_ObjectId<<"Opengl List ID:"<<m_GlListId<<std::endl;
00045         
00046         double tmplife;
00047         tmplife=(double)((double)glutGet(GLUT_ELAPSED_TIME)/1000)-m_StartingLife;
00048         if(tmplife-m_Life>=m_RefreshTime)
00049         {
00050                 m_Position=m_Position+m_Velocity-m_Gravity;
00051                 if(m_Acceleration!=0.0f)
00052                 {
00053                         if(m_Velocity.m_Vector[0]!=0.0f)
00054                         {
00055                                 m_Velocity.m_Vector[0]=m_Velocity.m_Vector[0]+((double)m_Acceleration*((double)(tmplife-m_Life)/1000));
00056                         }
00057                         if(m_Velocity.m_Vector[1]!=0.0f)
00058                         {
00059                                 m_Velocity.m_Vector[1]=m_Velocity.m_Vector[1]+((double)m_Acceleration*((double)(tmplife-m_Life)/1000));
00060                         }
00061                         if(m_Velocity.m_Vector[2]!=0.0f)
00062                         {
00063                                 m_Velocity.m_Vector[2]=m_Velocity.m_Vector[2]+((double)m_Acceleration*((double)(tmplife-m_Life)/1000));
00064                         }
00065                 }
00066                 m_Life=(double)((double)glutGet(GLUT_ELAPSED_TIME)/1000)-m_StartingLife;
00067         }
00068         glPushMatrix();
00069         glTranslatef(m_Position.GetX(),m_Position.GetY(),m_Position.GetZ());
00070         glCallList(m_GlListId);
00071         //m_BoxPvs.Draw();
00072         glPopMatrix();
00073 UnGuard
00074 }
00075 
00076 void ExCEntite::BuildPvsBox(void)
00077 {
00078 Guard(void ExCEntite::BuildPvsBox(void))
00079         //Serach for max and min value
00080         double MaxX,MaxY,MaxZ,MinX,MinY,MinZ;
00081         m_ItVecVertex=m_VecVertex.begin();
00082         MaxX=m_ItVecVertex->GetX();
00083         MinX=m_ItVecVertex->GetX();
00084         MaxY=m_ItVecVertex->GetY();
00085         MinY=m_ItVecVertex->GetY();
00086         MaxZ=m_ItVecVertex->GetZ();
00087         MinZ=m_ItVecVertex->GetZ();
00088         m_ItVecVertex++;
00089         for(;m_ItVecVertex!=m_VecVertex.end();++m_ItVecVertex)
00090         {
00091                 if(m_ItVecVertex->GetX()<MinX)
00092                 {
00093                         MinX=m_ItVecVertex->GetX();
00094                 }else
00095                 if(m_ItVecVertex->GetX()>MaxX)
00096                 {
00097                         MaxX=m_ItVecVertex->GetX();                     
00098                 }
00099                 
00100                 if(m_ItVecVertex->GetY()<MinY)
00101                 {
00102                         MinY=m_ItVecVertex->GetY();
00103                 }else
00104                 if(m_ItVecVertex->GetY()>MaxY)
00105                 {
00106                         MaxY=m_ItVecVertex->GetY();                     
00107                 }
00108                 
00109                 if(m_ItVecVertex->GetZ()<MinZ)
00110                 {
00111                         MinZ=m_ItVecVertex->GetZ();
00112                 }else
00113                 if(m_ItVecVertex->GetZ()>MaxZ)
00114                 {
00115                         MaxZ=m_ItVecVertex->GetZ();                     
00116                 }
00117         
00118         }
00119         m_BoxPvs.m_Vertex[0].SetX(MaxX);
00120         m_BoxPvs.m_Vertex[0].SetY(MaxY);
00121         m_BoxPvs.m_Vertex[0].SetZ(MinZ);
00122         m_BoxPvs.m_Vertex[1].SetX(MaxX);
00123         m_BoxPvs.m_Vertex[1].SetY(MaxY);
00124         m_BoxPvs.m_Vertex[1].SetZ(MaxZ);
00125         m_BoxPvs.m_Vertex[2].SetX(MinX);
00126         m_BoxPvs.m_Vertex[2].SetY(MaxY);
00127         m_BoxPvs.m_Vertex[2].SetZ(MaxZ);
00128         m_BoxPvs.m_Vertex[3].SetX(MinX);
00129         m_BoxPvs.m_Vertex[3].SetY(MaxY);
00130         m_BoxPvs.m_Vertex[3].SetZ(MinZ);
00131         m_BoxPvs.m_Vertex[4].SetX(MaxX);
00132         m_BoxPvs.m_Vertex[4].SetY(MinY);
00133         m_BoxPvs.m_Vertex[4].SetZ(MinZ);
00134         m_BoxPvs.m_Vertex[5].SetX(MaxX);
00135         m_BoxPvs.m_Vertex[5].SetY(MinY);
00136         m_BoxPvs.m_Vertex[5].SetZ(MaxZ);
00137         m_BoxPvs.m_Vertex[6].SetX(MinX);
00138         m_BoxPvs.m_Vertex[6].SetY(MinY);
00139         m_BoxPvs.m_Vertex[6].SetZ(MaxZ);
00140         m_BoxPvs.m_Vertex[7].SetX(MinX);
00141         m_BoxPvs.m_Vertex[7].SetY(MinY);
00142         m_BoxPvs.m_Vertex[7].SetZ(MinZ);
00143 
00144 UnGuard
00145 }
00146 
00147 
00148 void ExCEntite::SetRenderMode(int RenderMode)
00149 {
00150 Guard(void ExCEntite::SetRenderMode(int RenderMode))
00151         m_RenderMode=RenderMode;
00152         MakeList();
00153 UnGuard
00154 }
00155 
00156 void ExCEntite::MakeList(void)
00157 {
00158 Guard(void ExCEntite::MakeList(void))
00159 
00160         glDeleteLists(m_GlListId,1);    //delete old list
00161         m_GlListId=glGenLists(1);       //Ask for a new free list
00162         //std::cout<<"New list Id:"<<m_GlListId<<std::endl;
00163         glNewList(m_GlListId,GL_COMPILE);
00164         DrawWithoutList();
00165         glEndList();
00166 UnGuard
00167 }
00168 
00169 void ExCEntite:: DrawWithoutList(void)
00170 {
00171 Guard(void ExCEntite:: DrawWithoutList(void))
00172  
00173         switch(m_RenderMode)
00174         {
00175         case RENDER_TEXTURES_LIGHT:
00176                 break;
00177     case RENDER_TEXTURES:
00178                 glColor3f(1.0f, 1.0f, 1.0f);
00179         glEnable(GL_TEXTURE_2D);
00180                 glDisable(GL_LIGHTING);
00181                 
00182                 
00183             for(m_ItVecMesh=m_VecMesh.begin();m_ItVecMesh!=m_VecMesh.end();++m_ItVecMesh)
00184                 {
00185                         #ifdef DEBUG
00186                                 if(!ManagerTexture->SetActiveTexture(m_ItVecMesh->GetMaterial()))
00187                                 {
00188                                         std::cout<<"can not find texture for mesh :"<<std::endl;
00189                                         m_ItVecMesh->Affich();
00190                                 }
00191                         #endif
00192                         glBegin(GL_TRIANGLES);
00193                         glTexCoord2f(m_ItVecMesh->A.GetU(), m_ItVecMesh->A.GetV());
00194                         glVertex3f(m_ItVecMesh->A.GetX(),m_ItVecMesh->A.GetY(),m_ItVecMesh->A.GetZ());
00195                         glTexCoord2f(m_ItVecMesh->B.GetU(), m_ItVecMesh->B.GetV());
00196                         glVertex3f(m_ItVecMesh->B.GetX(),m_ItVecMesh->B.GetY(),m_ItVecMesh->B.GetZ());
00197                         glTexCoord2f(m_ItVecMesh->C.GetU(), m_ItVecMesh->C.GetV());
00198                         glVertex3f(m_ItVecMesh->C.GetX(),m_ItVecMesh->C.GetY(),m_ItVecMesh->C.GetZ());
00199                         glEnd();
00200                 }
00201         
00202                 glDisable(GL_TEXTURE_2D);
00203                 break;
00204         case RENDER_TRIANGLES_LIGHT:
00205                         glPushMatrix();
00206                         glColor3f(1.0f, 1.0f, 1.0f);
00207                         glBegin(GL_TRIANGLES);
00208                         for(m_ItVecMesh=m_VecMesh.begin();m_ItVecMesh!=m_VecMesh.end();++m_ItVecMesh)
00209                         {
00210                                 glNormal3f(m_ItVecMesh->A.GetX(),m_ItVecMesh->A.GetY(),m_ItVecMesh->A.GetZ());
00211                                 glVertex3f(m_ItVecMesh->A.GetX(),m_ItVecMesh->A.GetY(),m_ItVecMesh->A.GetZ());
00212                                 glNormal3f(m_ItVecMesh->B.GetX(),m_ItVecMesh->B.GetY(),m_ItVecMesh->B.GetZ());
00213                                 glVertex3f(m_ItVecMesh->B.GetX(),m_ItVecMesh->B.GetY(),m_ItVecMesh->B.GetZ());
00214                                 glNormal3f(m_ItVecMesh->C.GetX(),m_ItVecMesh->C.GetY(),m_ItVecMesh->C.GetZ());
00215                                 glVertex3f(m_ItVecMesh->C.GetX(),m_ItVecMesh->C.GetY(),m_ItVecMesh->C.GetZ());                          
00216                         }
00217                         glEnd();
00218                         glPopMatrix();
00219                 break;
00220         case RENDER_TRIANGLES:
00221                         glDisable(GL_LIGHTING);
00222                         glPushMatrix();
00223                         glColor3f(1.0f, 1.0f, 1.0f);
00224                         glBegin(GL_TRIANGLES);
00225                                 for(m_ItVecMesh=m_VecMesh.begin();m_ItVecMesh!=m_VecMesh.end();++m_ItVecMesh)
00226                                 {
00227                                         glVertex3f(m_ItVecMesh->A.GetX(),m_ItVecMesh->A.GetY(),m_ItVecMesh->A.GetZ());
00228                                         glVertex3f(m_ItVecMesh->B.GetX(),m_ItVecMesh->B.GetY(),m_ItVecMesh->B.GetZ());
00229                                         glVertex3f(m_ItVecMesh->C.GetX(),m_ItVecMesh->C.GetY(),m_ItVecMesh->C.GetZ());
00230                                 }
00231                         glEnd();
00232                         glPopMatrix();
00233                         glEnable(GL_LIGHTING);
00234                         break;
00235         case RENDER_POINTS:
00236                 glDisable(GL_LIGHTING);
00237                 glBegin(GL_POINTS);
00238                         glColor3f(1.0f, 1.0f, 1.0f);
00239                         for(m_ItVecVertex=m_VecVertex.begin();m_ItVecVertex!=m_VecVertex.end();++m_ItVecVertex)
00240                         {
00241                                 glVertex3f(m_ItVecVertex->GetX(),m_ItVecVertex->GetY(),m_ItVecVertex->GetZ());
00242                         }
00243                 glEnd();
00244                 glEnable(GL_LIGHTING);
00245                 break;
00246         case RENDER_LINES:
00247                         glDisable(GL_LIGHTING);
00248                         glPushMatrix();
00249                                 glColor3f(1.0f, 1.0f, 1.0f);
00250                                 for(m_ItVecMesh=m_VecMesh.begin();m_ItVecMesh!=m_VecMesh.end();++m_ItVecMesh)
00251                                 {
00252                                         glBegin(GL_LINE_LOOP);
00253                                         glVertex3f(m_ItVecMesh->A.GetX(),m_ItVecMesh->A.GetY(),m_ItVecMesh->A.GetZ());
00254                                         glVertex3f(m_ItVecMesh->B.GetX(),m_ItVecMesh->B.GetY(),m_ItVecMesh->B.GetZ());
00255                                         glVertex3f(m_ItVecMesh->C.GetX(),m_ItVecMesh->C.GetY(),m_ItVecMesh->C.GetZ());
00256                                         glEnd();
00257                                 }
00258                         glPopMatrix();
00259                         glEnable(GL_LIGHTING);
00260                 break;
00261         case RENDER_NO:
00262                 break;
00263         }
00264 UnGuard
00265 }
00266 
00267 
00268 void ExCEntite::AddVertex(ExCVertex Vertex)
00269 {
00270 Guard(void ExCEntite::AddVertex(ExCVertex Vertex))
00271         m_VecVertex.push_back(Vertex);
00272 UnGuard
00273 }
00274 
00275 void ExCEntite::AddMesh(ExCMesh Mesh)
00276 {
00277 Guard(void ExCEntite::AddMesh(ExCMesh Mesh))
00278         m_VecMesh.push_back(Mesh);
00279 UnGuard
00280 }
00281 
00282 ExCVertex ExCEntite::GetVertex(int pos)
00283 {
00284 Guard(ExCVertex ExCEntite::GetVertex(int pos))
00285         return m_VecVertex.at(pos);
00286 UnGuard
00287 }
00288 
00289 bool ExCEntite::LoadAsc(char *FileName)
00290 {
00291 Guard(void LoadAscEntite(char *FileName))
00292         bool                    Textured;
00293         int                             FileSize;
00294         int                             RetVal;
00295         int                             TmpFilePosition;
00296         int                             i,j,k;
00297         const char              *Name;
00298         char                    ch;
00299         std::string             SName;
00300         std::string             SNumber;
00301         FILE                    *MyFile;
00302         ExCVertex               VertexBuff;
00303 
00304         
00305         char *buffer;
00306         buffer= new char[15+strlen(FileName)];
00307         sprintf(buffer,"Load File :%s",FileName);
00308     //WriteToConsol(buffer);
00309         
00310         Textured=false;
00311         MyFile=fopen (FileName,"r");
00312         if(!MyFile)
00313         {
00314 //              WriteToConsol("File not found");
00315         
00316                 return false;
00317         }
00318         fseek(MyFile,0,SEEK_END);
00319         FileSize=ftell(MyFile);
00320         buffer= new char[15];
00321         sprintf(buffer,"Size:%d",FileSize);
00322     //WriteToConsol(buffer);
00323         //Start of file
00324         fseek(MyFile,0,SEEK_SET);
00325         //------------------
00326         //Read object name
00327         //------------------
00328         do
00329         {
00330                 RetVal=fread(&ch,sizeof(char),1,MyFile);
00331         }while(ch!=34);
00332         TmpFilePosition=ftell(MyFile);//remember where name start
00333         i=0;
00334         do
00335         {
00336                 RetVal=fread(&ch,sizeof(char),1,MyFile);i++;
00337         }while(ch!=34);
00338         fseek(MyFile,TmpFilePosition,SEEK_SET);
00339         for(j=0;j<i-1;j++)
00340         {
00341                 RetVal=fread(&ch,sizeof(char),1,MyFile);
00342                 SName=SName+ch;
00343         }
00344         Name = SName.data();
00345         SetName(Name);
00346         //-----------------------------
00347         //Read number of vertex en face
00348         //-----------------------------
00349         do
00350         {
00351                 RetVal=fread(&ch,sizeof(char),1,MyFile);
00352         }while(ch!=':');
00353         RetVal=fread(&ch,sizeof(char),1,MyFile);//one more to skip the space
00354     do
00355         {
00356                 RetVal=fread(&ch,sizeof(char),1,MyFile);
00357                 SNumber=SNumber+ch;
00358         }while(ch!=' ');
00359         SetNumberVertex(atol(SNumber.data()));          
00360         
00361         SNumber.erase(SNumber.begin(),SNumber.end());
00362         do
00363         {
00364                 RetVal=fread(&ch,sizeof(char),1,MyFile);
00365         }while(ch!=':');
00366         RetVal=fread(&ch,sizeof(char),1,MyFile);//one more to skip the space
00367     do
00368         {
00369                 RetVal=fread(&ch,sizeof(char),1,MyFile);
00370                 SNumber=SNumber+ch;
00371         }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
00372                                 ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
00373         SetNumberMesh(atol(SNumber.data()));            
00374         //std::cout<<"Number of Vertex :"<<m_NumberVertex<<" Number of Mesh :"<<m_NumberMesh<<std::endl;
00375         //-----------------------------
00376         //Read vertex 
00377         //----------------------------- 
00378         for(j=0;j<m_NumberVertex;j++)
00379         {
00380                 SNumber.erase(SNumber.begin(),SNumber.end());
00381                 do
00382                 {
00383                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00384                 }while(ch!='X');
00385                 RetVal=fread(&ch,sizeof(char),1,MyFile);//one more to skip :
00386                 do
00387                 {
00388                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00389                         SNumber=SNumber+ch;
00390                 }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
00391                                 ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
00392         try
00393                 {
00394                         VertexBuff.SetX(atof(SNumber.data()));
00395                 }catch(...)
00396                 {
00397                         VertexBuff.SetV(0.0f);
00398                         std::cout<<"Error on vertex V:"<<j<<std::endl;  
00399                 }
00400                 //-------------------------------------------------------------
00401                 SNumber.erase(SNumber.begin(),SNumber.end());
00402                 do
00403                 {
00404                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00405                 }while(ch!='Y');
00406                 RetVal=fread(&ch,sizeof(char),1,MyFile);//one more to skip :
00407                 do
00408                 {
00409                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00410                         SNumber=SNumber+ch;
00411                 }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
00412                                 ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
00413                 try
00414                 {
00415                         VertexBuff.SetY(atof(SNumber.data()));
00416                 }catch(...)
00417                 {
00418                         VertexBuff.SetV(0.0f);
00419                         std::cout<<"Error on vertex V:"<<j<<std::endl;  
00420                 }
00421                 //-------------------------------------------------------------
00422                 SNumber.erase(SNumber.begin(),SNumber.end());
00423                 do
00424                 {
00425                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00426                 }while(ch!='Z');
00427                 RetVal=fread(&ch,sizeof(char),1,MyFile);//one more to skip :
00428                 do
00429                 {
00430                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00431                         SNumber=SNumber+ch;
00432                 }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
00433                                 ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
00434         try
00435                 {
00436                         VertexBuff.SetZ(atof(SNumber.data()));
00437                 }catch(...)
00438                 {
00439                         VertexBuff.SetV(0.0f);
00440                         std::cout<<"Error on vertex V:"<<j<<std::endl;  
00441                 }
00442                 //--------------------------------------------------------------
00443                 //VertexBuff.Affich();std::cout<<std::endl;
00444                 RetVal=fread(&ch,sizeof(char),1,MyFile);
00445                 if(ch==' ')//if object has U and V value
00446                 {
00447                         Textured=true;
00448                         //-------------------------------------------------------------
00449                         SNumber.erase(SNumber.begin(),SNumber.end());
00450                         do
00451                         {
00452                                 RetVal=fread(&ch,sizeof(char),1,MyFile);
00453                         }while(ch!='U');
00454                         RetVal=fread(&ch,sizeof(char),1,MyFile);//one more to skip :
00455                         do
00456                         {
00457                                 RetVal=fread(&ch,sizeof(char),1,MyFile);
00458                                 SNumber=SNumber+ch;
00459                         }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
00460                                         ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
00461                         VertexBuff.SetU(atof(SNumber.data()));
00462                         //-------------------------------------------------------------
00463                         SNumber.erase(SNumber.begin(),SNumber.end());
00464                         do
00465                         {
00466                                 RetVal=fread(&ch,sizeof(char),1,MyFile);
00467                         }while(ch!='V');
00468                         RetVal=fread(&ch,sizeof(char),1,MyFile);//one more to skip :
00469                         do
00470                         {
00471                                 RetVal=fread(&ch,sizeof(char),1,MyFile);
00472                                 SNumber=SNumber+ch;
00473                         }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
00474                                         ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
00475                         VertexBuff.SetV(atof(SNumber.data()));
00476                         //-------------------------------------------------------------
00477                 }
00478                 m_VecVertex.push_back(VertexBuff);
00479         }
00480         //-----------------------------
00481         //Read face 
00482         //----------------------------- 
00483         for(j=0;j<m_NumberMesh;j++)
00484         {
00485                 ExCMesh                 MeshBuff;
00486                 MeshBuff.m_MeshNumber=j;
00487                 SNumber.erase(SNumber.begin(),SNumber.end());
00488                 do
00489                 {
00490                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00491                 }while(ch!='A');
00492                 RetVal=fread(&ch,sizeof(char),1,MyFile);//one more to skip :
00493                 do
00494                 {
00495                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00496                         SNumber=SNumber+ch;
00497                 }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
00498                                 ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
00499                 MeshBuff.A=m_VecVertex.at(atoi(SNumber.data()));
00500                 
00501                 //-------------------------------------------------------------
00502                 SNumber.erase(SNumber.begin(),SNumber.end());
00503                 do
00504                 {
00505                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00506                 }while(ch!='B');
00507                 RetVal=fread(&ch,sizeof(char),1,MyFile);//one more to skip :
00508                 do
00509                 {
00510                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00511                         SNumber=SNumber+ch;
00512                 }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
00513                                 ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
00514                 MeshBuff.B=m_VecVertex.at(atoi(SNumber.data()));
00515                 //-------------------------------------------------------------
00516                 SNumber.erase(SNumber.begin(),SNumber.end());
00517                 do
00518                 {
00519                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00520                 }while(ch!='C');
00521                 RetVal=fread(&ch,sizeof(char),1,MyFile);//one more to skip :
00522                 do
00523                 {
00524                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00525                         SNumber=SNumber+ch;
00526                 }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
00527                                 ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
00528                 MeshBuff.C=m_VecVertex.at(atoi(SNumber.data()));
00529                 //------------------------------------------------------------
00530                 do
00531                 {
00532                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00533                 }while(ch!='B');
00534                 RetVal=fread(&ch,sizeof(char),1,MyFile);//one more to skip :
00535                 SNumber.erase(SNumber.begin(),SNumber.end());
00536                 do
00537                 {
00538                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00539                         SNumber=SNumber+ch;
00540                 }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
00541                                 ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
00542                 MeshBuff.m_AB=atoi(SNumber.data());
00543                 do
00544                 {
00545                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00546                 }while(ch!='C');
00547                 RetVal=fread(&ch,sizeof(char),1,MyFile);//one more to skip :
00548                 SNumber.erase(SNumber.begin(),SNumber.end());
00549                 do
00550                 {
00551                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00552                         SNumber=SNumber+ch;
00553                 }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
00554                                 ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
00555                 MeshBuff.m_BC=atoi(SNumber.data());
00556                 do
00557                 {
00558                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00559                 }while(ch!='A');
00560                 RetVal=fread(&ch,sizeof(char),1,MyFile);//one more to skip :
00561                 SNumber.erase(SNumber.begin(),SNumber.end());
00562                 do
00563                 {
00564                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00565                         SNumber=SNumber+ch;
00566                 }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
00567                                 ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
00568                 MeshBuff.m_CA=atoi(SNumber.data());
00569                 if(Textured)
00570                 {
00571                         //-----------------------------
00572                         //Read material 
00573                         //-----------------------------
00574                         std::string Material;
00575                 do
00576                         {
00577                                 RetVal=fread(&ch,sizeof(char),1,MyFile);
00578                         }while(ch!=34);
00579                         TmpFilePosition=ftell(MyFile);//remember where name start
00580                         i=0;
00581                         do
00582                         {
00583                                 RetVal=fread(&ch,sizeof(char),1,MyFile);i++;
00584                         }while(ch!=34);
00585                         fseek(MyFile,TmpFilePosition,SEEK_SET);
00586                         for(k=0;k<i-1;k++)
00587                         {
00588                                 RetVal=fread(&ch,sizeof(char),1,MyFile);
00589                                 Material=Material+ch;
00590                         }
00591                         MeshBuff.SetMaterial(Material.data());
00592                 }
00593                 //-----------------------------
00594                 //Read Smoothing 
00595                 //-----------------------------
00596                 do
00597                 {
00598                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00599                 }while(ch!=':');
00600                 RetVal=fread(&ch,sizeof(char),1,MyFile);//one more to skip espace
00601                 SNumber.erase(SNumber.begin(),SNumber.end());
00602                 do
00603                 {
00604                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00605                         SNumber=SNumber+ch;
00606                 }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
00607                                 ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
00608            MeshBuff.m_Smoothing=atoi(SNumber.data());
00609            m_VecMesh.push_back(MeshBuff);
00610         }
00611         fclose(MyFile);
00612         BuildPvsBox();
00613         return true;
00614 UnGuard
00615 }

Generated on Tue Aug 6 20:27:06 2002 for ExNihilo by doxygen1.2.17