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

# Référence de la classe ExCModel3DS

`#include <ExCModel3DS.h>`

Graphe d'héritage de la classe ExCModel3DS

## Membres publics
| ExCModel3DS (void)
| ~ExCModel3DS (void)
void | Draw (void)
bool | Load (std::string FileName)
## Membres protégés
void | ReadObjectInfo (tChunk *chunk)
void | ReadObject (tChunk *chunk)
void | ReadObjectMaterial (tChunk *chunk)
void | ReadChunk (tChunk *chunk)
void | Skip (tChunk *chunk)
void | ReadVertices (t3DObject *pObject, tChunk *chunk)
void | ReadFace (t3DObject *pObject, tChunk *chunk)
void | ReadUVCoordinates (t3DObject *pObject, tChunk *chunk)
void | ReadObjectMaterial (t3DObject *pObject, tChunk *chunk)
void | BuildList (int Rendu)
void | BuildArray (int Rendu)
## Attributs Protégés
FILE * | m_filePtr
int | numOfObjects
int | numOfMaterials
std::vector< tMaterialInfo > | m_VecMaterials
std::vector< t3DObject > | m_VecObject
tChunk * | m_CurrentChunk
tChunk * | m_TempChunk
GLuint | m_ListId
float * | m_VertexArray
unsigned int * | m_FaceArray
float * | m_TextureArray

## Documentation des contructeurs et destructeurs

ExCModel3DS | ( | void |  | ) |

| Définition à la ligne 26 du fichier ExCModel3DS.cpp. Références ExCModel3DS(), Guard, et m_ListId. Référencé par ExCModel3DS(), et ~ExCModel3DS().
    00027 {
    00028 Guard(ExCModel3DS::ExCModel3DS(void))
    00029         m_ListId=-1;
    00030 UnGuard
    00031 }

~ExCModel3DS | ( | void |  | ) |

| Définition à la ligne 33 du fichier ExCModel3DS.cpp. Références ExCModel3DS(), et Guard.
    00034 {
    00035 Guard(ExCModel3DS::~ExCModel3DS(void))
    00036 UnGuard
    00037 }

## Documentation des méthodes

void BuildArray | ( | int | Rendu | ) | `[protected]`

| Définition à la ligne 38 du fichier ExCModel3DS.cpp. Références BuildArray(), Guard, m_FaceArray, m_TextureArray, m_VecObject, et m_VertexArray. Référencé par BuildArray(), et Load().
    00039 {
    00040 Guard(void ExCModel3DS::BuildArray(int Rendu))
    00041         //std::cout<<"Build array"<<std::endl;
    00042         //1 how many vertex and face
    00043         int HowManyVertex =0;
    00044         int HowManyFace =0;
    00045         int HowManyText =0;
    00046         for(unsigned int i=0;i<m_VecObject.size();i++)//all objects
    00047         {
    00048                 HowManyVertex+=m_VecObject.at(i).Verts.size();;
    00049                 HowManyFace+=m_VecObject.at(i).Faces.size();
    00050                 HowManyText+=m_VecObject.at(i).TexVerts.size();;
    00051         }
    00052         m_VertexArray=new float[HowManyVertex*3];
    00053         m_FaceArray=new unsigned int[HowManyFace*3];
    00054         m_TextureArray= new  float[HowManyText*2];
    00055         //std::cout<<"Vertex:"<<HowManyVertex<<" Faces:"<<HowManyFace<<" Texture UV:"<<HowManyText<<std::endl;
    00056
    00057         unsigned int CmptFaces=0;
    00058         for(unsigned int i=0;i<m_VecObject.size();i++)//draw all objects
    00059         {
    00060                 for(unsigned int j=0;j<m_VecObject.at(i).Faces.size();j++)//draw all face
    00061                 {
    00062                         m_FaceArray[j+i]=m_VecObject.at(i).Faces.at(j).vertIndex[0];
    00063                         m_FaceArray[j+i+1]=m_VecObject.at(i).Faces.at(j).vertIndex[1];
    00064                         m_FaceArray[j+i+2]=m_VecObject.at(i).Faces.at(j).vertIndex[2];
    00065                         //----------------
    00066                         //Texture coord
    00067                         //----------------
    00068         /*              m_TextureArray[j+i]=m_VecObject.at(i).TexVerts.at(VecFace.GetX()).GetX();
    00069                         m_TextureArray[j+i+1]=m_VecObject.at(i).TexVerts.at(VecFace.GetX()).GetY();
    00070
    00071                         m_TextureArray[j+i+2]=m_VecObject.at(i).TexVerts.at(VecFace.GetY()).GetX();
    00072                         m_TextureArray[j+i+3]=m_VecObject.at(i).TexVerts.at(VecFace.GetY()).GetY();
    00073
    00074                         m_TextureArray[j+i+4]=m_VecObject.at(i).TexVerts.at(VecFace.GetZ()).GetX();
    00075                         m_TextureArray[j+i+5]=m_VecObject.at(i).TexVerts.at(VecFace.GetZ()).GetY();
    00076
    00077                         //----------------
    00078                         //Vertex coord
    00079                         //----------------
    00080
    00081                         m_VertexArray[j+i]=m_VecObject.at(i).Verts.at(VecFace.GetX()).GetX();
    00082                         m_VertexArray[j+i]=m_VecObject.at(i).Verts.at(VecFace.GetX()).GetY();
    00083                         m_VertexArray[j+i]=m_VecObject.at(i).Verts.at(VecFace.GetX()).GetZ();
    00084
    00085                         m_VertexArray[j+i]=m_VecObject.at(i).Verts.at(VecFace.GetY()).GetX();
    00086                         m_VertexArray[j+i]=m_VecObject.at(i).Verts.at(VecFace.GetY()).GetY();
    00087                         m_VertexArray[j+i]=m_VecObject.at(i).Verts.at(VecFace.GetY()).GetZ();
    00088
    00089                         m_VertexArray[j+i]=m_VecObject.at(i).Verts.at(VecFace.GetZ()).GetX();
    00090                         m_VertexArray[j+i]=m_VecObject.at(i).Verts.at(VecFace.GetZ()).GetY();
    00091                         m_VertexArray[j+i]=m_VecObject.at(i).Verts.at(VecFace.GetZ()).GetZ();
    00092
    00093                         ManagerTexture->SetCurrentObject(m_VecObject.at(i).Material);*/
    00094                 }
    00095         }
    00096         glEnableClientState(GL_VERTEX_ARRAY);
    00097         glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    00098         glVertexPointer(3, GL_FLOAT,0,m_VertexArray);
    00099         glTexCoordPointer(2,GL_FLOAT,0,m_TextureArray);
    00100
    00101
    00102 UnGuard
    00103 }

void BuildList | ( | int | Rendu | ) | `[protected]`

| Définition à la ligne 124 du fichier ExCModel3DS.cpp. Références BuildList(), ExCVec2D::GetX(), ExCVec3D::GetX(), ExCVec2D::GetY(), ExCVec3D::GetY(), ExCVec3D::GetZ(), Guard, m_ListId, m_VecObject, ExCVec3D::m_Vector, ExCModel::ManagerTexture, ExManagerTexture::SetCurrentObject(), ExCVec2D::SetX(), ExCVec3D::SetX(), ExCVec2D::SetY(), ExCVec3D::SetY(), et ExCVec3D::SetZ(). Référencé par BuildList(), et Draw().
    00125 {
    00126 Guard(void ExCModel3DS::BuildList(int Rendu))
    00127         glDeleteLists(m_ListId,1);      //delete old list
    00128         m_ListId=glGenLists(1); //Ask for a new free list
    00129         glNewList(m_ListId,GL_COMPILE);
    00130                 glPushAttrib(GL_ALL_ATTRIB_BITS);
    00131 //---------------------------------------------------
    00132                 ExCVec3D VecAB,VecBC,VecCA,VecFace;
    00133                 ExCVec3D VecX,VecY,VecZ;
    00134                 ExCVec2D VecTAB,VecTBC,VecTCA;
    00135                 glPushMatrix();
    00136                 //ExCModel::Draw();
    00137                 glDisable(GL_LIGHTING);
    00138                 for(unsigned int i=0;i<m_VecObject.size();i++)//draw all objects
    00139                 {
    00140                         for(unsigned int j=0;j<m_VecObject.at(i).Faces.size();j++)//draw all objects
    00141                         {
    00142                                 VecFace.SetX(m_VecObject.at(i).Faces.at(j).vertIndex[0]);
    00143                                 VecFace.SetY(m_VecObject.at(i).Faces.at(j).vertIndex[1]);
    00144                                 VecFace.SetZ(m_VecObject.at(i).Faces.at(j).vertIndex[2]);
    00145                                 //----------------
    00146                                 //Texture coord
    00147                                 //----------------
    00148                                 VecTAB.SetX(m_VecObject.at(i).TexVerts.at(VecFace.GetX()).GetX());
    00149                                 VecTAB.SetY(m_VecObject.at(i).TexVerts.at(VecFace.GetX()).GetY());
    00150
    00151                                 VecTBC.SetX(m_VecObject.at(i).TexVerts.at(VecFace.GetY()).GetX());
    00152                                 VecTBC.SetY(m_VecObject.at(i).TexVerts.at(VecFace.GetY()).GetY());
    00153
    00154                                 VecTCA.SetX(m_VecObject.at(i).TexVerts.at(VecFace.GetZ()).GetX());
    00155                                 VecTCA.SetY(m_VecObject.at(i).TexVerts.at(VecFace.GetZ()).GetY());
    00156
    00157                                 //----------------
    00158                                 //Vertex coord
    00159                                 //----------------
    00160
    00161                                 VecX.SetX(m_VecObject.at(i).Verts.at(VecFace.GetX()).GetX());
    00162                                 VecX.SetY(m_VecObject.at(i).Verts.at(VecFace.GetX()).GetY());
    00163                                 VecX.SetZ(m_VecObject.at(i).Verts.at(VecFace.GetX()).GetZ());
    00164
    00165                                 VecY.SetX(m_VecObject.at(i).Verts.at(VecFace.GetY()).GetX());
    00166                                 VecY.SetY(m_VecObject.at(i).Verts.at(VecFace.GetY()).GetY());
    00167                                 VecY.SetZ(m_VecObject.at(i).Verts.at(VecFace.GetY()).GetZ());
    00168
    00169                                 VecZ.SetX(m_VecObject.at(i).Verts.at(VecFace.GetZ()).GetX());
    00170                                 VecZ.SetY(m_VecObject.at(i).Verts.at(VecFace.GetZ()).GetY());
    00171                                 VecZ.SetZ(m_VecObject.at(i).Verts.at(VecFace.GetZ()).GetZ());
    00172
    00174
    00175                                 ManagerTexture->SetCurrentObject(m_VecObject.at(i).Material);
    00176
    00178
    00179                                 glColor3f(1.0f,1.0f,1.0f);
    00180                                 glEnable(GL_TEXTURE_2D);
    00181                                 glBegin(GL_TRIANGLES);
    00182                                         glTexCoord2f(VecTAB.GetX(),VecTAB.GetY());
    00183                                         glVertex3fv(VecX.m_Vector);
    00184                                         glTexCoord2f(VecTBC.GetX(),VecTBC.GetY());
    00185                                         glVertex3fv(VecY.m_Vector);
    00186                                         glTexCoord2f(VecTCA.GetX(),VecTCA.GetY());
    00187                                         glVertex3fv(VecZ.m_Vector);
    00188                                 glEnd();
    00189                                 glDisable(GL_TEXTURE_2D);
    00190                         }
    00191                 }
    00192                 glPopMatrix();
    00193 //---------------------------------------------------
    00194                 glPopAttrib();
    00195         glEndList();
    00196         UnGuard
    00197 }

void Draw | ( | void |  | ) | `[virtual]`

| Redéfinie à partir de ExCModel. Définition à la ligne 105 du fichier ExCModel3DS.cpp. Références BuildList(), ExCModel::Draw(), Draw(), Guard, et m_ListId. Référencé par Draw().
    00106 {
    00107         Guard(void ExCModel3DS::Draw(void))
    00108                 glPushMatrix();
    00109         glDisable(GL_LIGHTING);
    00110         ExCModel::Draw();
    00111         if(m_ListId==-1){
    00112                 BuildList(RENDER_TEXTURES);
    00113                 //std::cout<<"build 3ds list"<<std::endl;
    00114         }
    00115         glCallList(m_ListId);
    00116         //glDrawElements(GL_TRIANGLES,,GL_UNSIGNED_INT,m_FaceArray);
    00117         glEnable(GL_LIGHTING);
    00118         glPopMatrix();
    00120
    00121         UnGuard
    00122 }

bool Load | ( | std::string | FileName | ) |

| Définition à la ligne 201 du fichier ExCModel3DS.cpp. Références BuildArray(), tChunk::bytesRead, EDITKEYFRAME, FILEVERSION, Guard, tChunk::ID, tChunk::length, Load(), m_CurrentChunk, m_filePtr, OBJECTINFO, PRIMARY, ReadChunk(), ReadObjectInfo(), Skip(), et version. Référencé par Load(), et ExManagerModel::Load3DS().
    00202 {
    00203 Guard(bool ExCModel3DS::Load(std::string FileName))
    00204         unsigned int version=0;
    00205         int buffer[50000] = {0};
    00206         char bufferc[255];memset(bufferc,0,255);
    00207         //std::cout<<FileName<<std::endl;
    00208
    00209         m_filePtr = fopen(FileName.data(), "rb");
    00210     if (m_filePtr == NULL)
    00211         {
    00212                 throw ExCExpFileNotFound();
    00213                 return false;
    00214         }
    00215         tChunk *chunk;
    00216         chunk = new tChunk;
    00217         ReadChunk(chunk);
    00218         //------------------------------------------------------------------------------
    00219         if(chunk->ID==PRIMARY)
    00220         {
    00221                 //std::cout<<"Primary chunk file lenght:"<<chunk->length<<std::endl;
    00222                 m_CurrentChunk = new tChunk;
    00223                 while (chunk->bytesRead < chunk->length)
    00224                 {
    00225                         ReadChunk(m_CurrentChunk);
    00226                         switch(m_CurrentChunk->ID)
    00227                         {
    00228                         case FILEVERSION:
    00229                                 m_CurrentChunk->bytesRead += fread(&version, 1,m_CurrentChunk->length - m_CurrentChunk->bytesRead, m_filePtr);
    00230                                 //std::cout<<"Read FILEVERSION :"<<version<<std::endl;
    00231                                 break;
    00232                         case OBJECTINFO:
    00233                                 //std::cout<<"Read OBJECTINFO"<<std::endl;
    00234                                 ReadObjectInfo(m_CurrentChunk);
    00235                                 break;
    00236                         case EDITKEYFRAME:
    00237                                 //std::cout<<"Read EDITKEYFRAME"<<std::endl;
    00238                                 Skip(m_CurrentChunk);
    00239                                 break;
    00240                         default:
    00241                                 //std::cout<<"Skip unused ,Chunk ID:"<<std::hex<<m_CurrentChunk->ID<<" Chunk Lenght:"<<std::dec<<m_CurrentChunk->length<<std::endl;
    00242                                 Skip(m_CurrentChunk);
    00243                                 break;
    00244                         }
    00245                         chunk->bytesRead += m_CurrentChunk->bytesRead;
    00246                 }
    00247                 delete m_CurrentChunk;
    00248                 m_CurrentChunk = chunk;
    00249         }//end of if(chunk->ID==PRIMARY)
    00250         //------------------------------------------------------------------------------
    00251         fclose(m_filePtr);
    00252         BuildArray(0);
    00253         return true;
    00254 UnGuard
    00255 }

void ReadChunk | ( | tChunk * | chunk | ) | `[protected]`

| Définition à la ligne 476 du fichier ExCModel3DS.cpp. Références tChunk::bytesRead, Guard, tChunk::ID, tChunk::length, et m_filePtr. Référencé par Load(), ReadFace(), ReadObject(), ReadObjectInfo(), et ReadObjectMaterial().
    00477 {
    00478 Guard(void ExCModel3DS::tChunk ReadChunk(tChunk *chunk))
    00480         chunk->bytesRead = fread(&chunk->ID, 1, 2, m_filePtr);
    00481         chunk->bytesRead += fread(&chunk->length, 1, 4, m_filePtr);
    00485 UnGuard
    00486 }

void ReadFace | ( | t3DObject * | pObject,
|  | tChunk * | chunk
| ) | `[protected]`

| Définition à la ligne 523 du fichier ExCModel3DS.cpp. Références tChunk::bytesRead, t3DObject::Faces, Guard, tChunk::ID, tChunk::length, ExManagerTexture::Load(), m_CurrentChunk, m_filePtr, ExCModel::ManagerTexture, t3DObject::Material, t3DObject::numOfFaces, OBJECT_MATERIAL, OBJECT_SMOOTH_GROUP, ReadChunk(), ReadFace(), Skip(), et tFace::vertIndex. Référencé par ReadFace(), et ReadObject().
    00524 {
    00525 Guard(void ExCModel3DS::ReadFace(t3DObject *pObject,tChunk *chunk))
    00526         int buffer[50000] = {0};
    00527         // Read in the number of vertices (int)
    00528         tFace stFace;
    00529         unsigned short face,index;
    00530         chunk->bytesRead += fread(&face, 1,sizeof(unsigned short), m_filePtr);
    00531         pObject->numOfFaces=face;
    00533
    00534         // Go through all of the faces in this object
    00535         for(int i = 0; i <face; i++)
    00536         {
    00537                 // Next, we read in the A then B then C index for the face, but ignore the 4th value.
    00538                 // The fourth value is a visibility flag for 3D Studio Max, we don't care about this.
    00539                 for(int j = 0; j < 4; j++)
    00540                 {
    00541                         // Read the first vertice index for the current face
    00542                         chunk->bytesRead += fread(&index, 1, sizeof(unsigned short), m_filePtr);
    00543
    00544                         if(j < 3)
    00545                         {
    00546                                 // Store the index in our face structure.
    00547                                 //pObject->pFaces[i].vertIndex[j] = index;
    00548                                 stFace.vertIndex[j]=index;
    00549                         }
    00550                 }
    00552                 pObject->Faces.push_back(stFace);
    00553         }
    00554         char b=0;
    00555         std::string Material;
    00556         m_CurrentChunk = new tChunk;
    00557         while (chunk->bytesRead < chunk->length)
    00558         {
    00559                 ReadChunk(m_CurrentChunk);
    00560                 switch(m_CurrentChunk->ID)
    00561                 {
    00562                 case OBJECT_MATERIAL:
    00563                         //std::cout<<"                          Read object face OBJECT_MATERIAL"<<std::endl;
    00564                         do
    00565                         {
    00566                                 m_CurrentChunk->bytesRead += fread(&b, 1, sizeof(char), m_filePtr);
    00567                                 if(b!=0)Material=Material+b;
    00568                         }while(b!=0);
    00570                         pObject->Material=Material;
    00571                         //std::cout<<"#"<<Material<<"#"<<std::endl;
    00572                         ManagerTexture->Load(Material);
    00573                         Skip(m_CurrentChunk);
    00574                         break;
    00575                 case OBJECT_SMOOTH_GROUP:
    00576                         //std::cout<<"                          Read object face OBJECT_SMOOTH_GROUP"<<std::endl;
    00577                         Skip(m_CurrentChunk);
    00578                         break;
    00579         default:
    00580                         //std::cout<<"                          Skip unused ,Chunk ID:"<<std::hex<<m_CurrentChunk->ID<<" Chunk Lenght:"<<std::dec<<m_CurrentChunk->length<<std::endl;
    00581                         Skip(m_CurrentChunk);
    00582                         break;
    00583                 }
    00584                 chunk->bytesRead += m_CurrentChunk->bytesRead;
    00585         }
    00586         delete m_CurrentChunk;
    00587         m_CurrentChunk = chunk;
    00588
    00589
    00590
    00591 UnGuard
    00592 }

void ReadObject | ( | tChunk * | chunk | ) | `[protected]`

| Définition à la ligne 306 du fichier ExCModel3DS.cpp. Références tChunk::bytesRead, Guard, tChunk::ID, tChunk::length, m_CurrentChunk, m_VecObject, OBJECT_FACES, OBJECT_MATERIAL, OBJECT_MESH, OBJECT_MESH_MATRIX, OBJECT_UV, OBJECT_VERTICES, ReadChunk(), ReadFace(), ReadObject(), ReadObjectMaterial(), ReadUVCoordinates(), ReadVertices(), et Skip(). Référencé par ReadObject(), et ReadObjectInfo().
    00307 {
    00308 Guard(void ExCModel3DS::ReadObject(tChunk *chunk))
    00309         int buffer[50000] = {0};
    00310         t3DObject *pObject;
    00311         pObject = new t3DObject;
    00312         m_CurrentChunk = new tChunk;
    00313         while (chunk->bytesRead < chunk->length)
    00314         {
    00315                 ReadChunk(m_CurrentChunk);
    00316                 switch(m_CurrentChunk->ID)
    00317                 {
    00318                 case OBJECT_MESH:
    00319                         //std::cout<<"          Read object OBJECT_MESH"<<std::endl;
    00320                         ReadObject(m_CurrentChunk);
    00321                         break;
    00322                 case OBJECT_VERTICES:
    00323                         //std::cout<<"                  Read object OBJECT_VERTICES"<<std::endl;
    00324                         //Skip(m_CurrentChunk);
    00325                         ReadVertices(pObject,m_CurrentChunk);
    00326                         break;
    00327         case OBJECT_FACES:
    00328                         //std::cout<<"                  Read object OBJECT_FACES"<<std::endl;
    00329                         ReadFace(pObject,m_CurrentChunk);
    00330                         break;
    00331         case OBJECT_MATERIAL:
    00332                         //std::cout<<"                  Read object OBJECT_MATERIAL"<<std::endl;
    00333                         ReadObjectMaterial(pObject,m_CurrentChunk);
    00334                         break;
    00335         case OBJECT_UV:
    00336                         //std::cout<<"                  Read object OBJECT_UV"<<std::endl;
    00337                         ReadUVCoordinates(pObject,m_CurrentChunk);
    00338                         break;
    00339                 case OBJECT_MESH_MATRIX:
    00340                         //std::cout<<"                  Read object OBJECT_MESH_MATRIX"<<std::endl;
    00341                         Skip(m_CurrentChunk);
    00342                         break;
    00343                 default:
    00344                         //std::cout<<"                  Skip unused ,Chunk ID:"<<std::hex<<m_CurrentChunk->ID<<" Chunk Lenght:"<<std::dec<<m_CurrentChunk->length<<std::endl;
    00345                         Skip(m_CurrentChunk);
    00346                         break;
    00347                 }
    00348                 chunk->bytesRead += m_CurrentChunk->bytesRead;
    00349         }
    00350
    00351         m_VecObject.push_back(*pObject);
    00352         delete m_CurrentChunk;
    00353         m_CurrentChunk = chunk;
    00354 UnGuard
    00355 }

void ReadObjectInfo | ( | tChunk * | chunk | ) | `[protected]`

| Définition à la ligne 257 du fichier ExCModel3DS.cpp. Références tChunk::bytesRead, Guard, tChunk::ID, tChunk::length, m_CurrentChunk, m_filePtr, MASTER_SCALE, MATERIAL, MESH_VERSION, OBJECT, ReadChunk(), ReadObject(), ReadObjectInfo(), ReadObjectMaterial(), et Skip(). Référencé par Load(), et ReadObjectInfo().
    00258 {
    00259 Guard(void ExCModel3DS::ReadObjectInfo(tChunk *chunk))
    00260                 int buffer[50000] = {0};
    00261                 char bufferc[255],b;
    00262                 std::string BuffObject;
    00263                 m_CurrentChunk = new tChunk;
    00264                 while (chunk->bytesRead < chunk->length)
    00265                 {
    00266                         ReadChunk(m_CurrentChunk);
    00267                         switch(m_CurrentChunk->ID)
    00268                         {
    00269                         case MATERIAL:
    00270                                 //std::cout<<"  Read MATERIAL"<<std::endl;
    00271                                 ReadObjectMaterial(m_CurrentChunk);
    00272                                 break;
    00273                         case OBJECT:
    00274                                 memset(bufferc,0,255);
    00275                                 //m_CurrentChunk->bytesRead += 8;
    00276                                 //m_CurrentChunk->bytesRead += fread(&bufferc, 1,8, m_filePtr);
    00278                                 BuffObject.erase(BuffObject.begin(),BuffObject.end());
    00279                                 do
    00280                                 {
    00281                                         m_CurrentChunk->bytesRead += fread(&b, 1, sizeof(char), m_filePtr);
    00282                                         if(b!=0)BuffObject=BuffObject+b;
    00283                                 }while(b!=0);
    00284                                 //std::cout<<"  Read OBJECT :"<<BuffObject<<std::endl;
    00285                                 ReadObject(m_CurrentChunk);
    00286                                 break;
    00287                         case MESH_VERSION:
    00288                                 //std::cout<<"  Read MESH_VERSION"<<std::endl;
    00289                                 Skip(m_CurrentChunk);
    00290                                 break;
    00291                         case MASTER_SCALE:
    00292                                 //std::cout<<"  Read MASTER_SCALE"<<std::endl;
    00293                                 Skip(m_CurrentChunk);
    00294                                 break;
    00295                         default:
    00296                                 //std::cout<<"  Skip unused ,Chunk ID:"<<std::hex<<m_CurrentChunk->ID<<" Chunk Lenght:"<<std::dec<<m_CurrentChunk->length<<std::endl;
    00297                                 Skip(m_CurrentChunk);
    00298                                 break;
    00299                         }
    00300                         chunk->bytesRead += m_CurrentChunk->bytesRead;
    00301                 }
    00302                 delete m_CurrentChunk;
    00303                 m_CurrentChunk = chunk;
    00304 UnGuard
    00305 }

void ReadObjectMaterial | ( | t3DObject * | pObject,
|  | tChunk * | chunk
| ) | `[protected]`

| Définition à la ligne 618 du fichier ExCModel3DS.cpp. Références tChunk::bytesRead, Guard, m_filePtr, ReadObjectMaterial(), et Skip().
    00619 {
    00620 Guard(void ExCModel3DS::ReadObjectMaterial(tChunk *chunk))
    00621         char b=0;
    00622         std::string Material;
    00623         do
    00624         {
    00625                 chunk->bytesRead += fread(&b, 1, sizeof(char), m_filePtr);
    00626                 Material=Material+b;
    00627         }while(b!=0);
    00628         //std::cout<<Material<<std::endl;
    00629         Skip(chunk);
    00630 UnGuard
    00631 }

void ReadObjectMaterial | ( | tChunk * | chunk | ) | `[protected]`

| Définition à la ligne 357 du fichier ExCModel3DS.cpp. Références tChunk::bytesRead, Guard, tChunk::ID, tChunk::length, m_CurrentChunk, m_filePtr, MAT3DWIRETHICKNESS, MATAMBIENTCOLOR, MATDIFFUSE, MATFACEMAP, MATMAP, MATMAPFILE, MATMAPFILTERINGBLUR, MATMAPOPTION, MATNAME, MATREFLECTBLUR, MATSELFILUM, MATSHININESS, MATSHININESSSTR, MATSOFTEN, MATSPECULAR, MATTRANSFALLOFF, MATTRANSFALLOFFIN, MATTRANSPARENCY, MATTRANSPARENCYADD, MATTWOSIDED, MATTYPE, MATWIREON, MATWIRETHICKNESS, ReadChunk(), ReadObjectMaterial(), et Skip(). Référencé par ReadObject(), ReadObjectInfo(), et ReadObjectMaterial().
    00358 {
    00359 Guard(void ExCModel3DS::ReadObjectMaterial(tChunk *chunk))
    00360                 int buffer[50000] = {0};
    00361                 char bufferc[255];
    00362                 m_CurrentChunk = new tChunk;
    00363                 while (chunk->bytesRead < chunk->length)
    00364                 {
    00365                         ReadChunk(m_CurrentChunk);
    00366                         switch(m_CurrentChunk->ID)
    00367                         {
    00368                         case MATNAME:
    00369                                 memset(bufferc,0,255);
    00370                                 m_CurrentChunk->bytesRead += fread(bufferc, 1, m_CurrentChunk->length - m_CurrentChunk->bytesRead, m_filePtr);
    00371                                 //std::cout<<"          Read MATNAME:"<<bufferc<<std::endl;
    00372                                 break;
    00373                         case MATAMBIENTCOLOR:
    00374                                 //std::cout<<"          Read MATAMBIENTCOLOR"<<std::endl;
    00375                                 Skip(m_CurrentChunk);
    00376                                 break;
    00377                         case MATDIFFUSE:
    00378                                 //std::cout<<"          Read MATDIFFUSE"<<std::endl;
    00379                                 Skip(m_CurrentChunk);
    00380                                 break;
    00381                         case MATSPECULAR:
    00382                                 //std::cout<<"          Read MATSPECULAR"<<std::endl;
    00383                                 Skip(m_CurrentChunk);
    00384                                 break;
    00385                         case MATSHININESS:
    00386                                 //std::cout<<"          Read MATSHININESS"<<std::endl;
    00387                                 Skip(m_CurrentChunk);
    00388                                 break;
    00389                         case MATSHININESSSTR:
    00390                                 //std::cout<<"          Read MATSHININESSSTR"<<std::endl;
    00391                                 Skip(m_CurrentChunk);
    00392                                 break;
    00393                         case MATTRANSPARENCY:
    00394                                 //std::cout<<"          Read MATTRANSPARENCY"<<std::endl;
    00395                                 Skip(m_CurrentChunk);
    00396                                 break;
    00397                         case MATTRANSFALLOFF:
    00398                                 //std::cout<<"          Read MATTRANSFALLOFF"<<std::endl;
    00399                                 Skip(m_CurrentChunk);
    00400                                 break;
    00401                         case MATREFLECTBLUR:
    00402                                 //std::cout<<"          Read MATREFLECTBLUR"<<std::endl;
    00403                                 Skip(m_CurrentChunk);
    00404                                 break;
    00405                         case MATTWOSIDED:
    00406                                 //std::cout<<"          Read MATTWOSIDED"<<std::endl;
    00407                                 Skip(m_CurrentChunk);
    00408                                 break;
    00409                         case MATTRANSPARENCYADD:
    00410                                 //std::cout<<"          Read MATTRANSPARENCYADD"<<std::endl;
    00411                                 Skip(m_CurrentChunk);
    00412                                 break;
    00413                         case MATSELFILUM:
    00414                                 //std::cout<<"          Read MATSELFILUM"<<std::endl;
    00415                                 Skip(m_CurrentChunk);
    00416                                 break;
    00417                         case MATWIREON:
    00418                                 //std::cout<<"          Read MATWIREON"<<std::endl;
    00419                                 Skip(m_CurrentChunk);
    00420                                 break;
    00421                         case MATWIRETHICKNESS:
    00422                                 //std::cout<<"          Read MATWIRETHICKNESS"<<std::endl;
    00423                                 Skip(m_CurrentChunk);
    00424                                 break;
    00425                         case MATFACEMAP:
    00426                                 //std::cout<<"          Read MATFACEMAP"<<std::endl;
    00427                                 Skip(m_CurrentChunk);
    00428                                 break;
    00429                         case MATTRANSFALLOFFIN:
    00430                                 //std::cout<<"          Read MATTRANSFALLOFFIN"<<std::endl;
    00431                                 Skip(m_CurrentChunk);
    00432                                 break;
    00433                         case MATSOFTEN:
    00434                                 //std::cout<<"          Read MATSOFTEN"<<std::endl;
    00435                                 Skip(m_CurrentChunk);
    00436                                 break;
    00437                         case MAT3DWIRETHICKNESS:
    00438                                 //std::cout<<"          Read MAT3DWIRETHICKNESS"<<std::endl;
    00439                                 Skip(m_CurrentChunk);
    00440                                 break;
    00441                         case MATTYPE:                                                   // This is the header for the texture info
    00442                                 //std::cout<<"          Read MATTYPE"<<std::endl;
    00443                                 Skip(m_CurrentChunk);
    00444                                 break;
    00445                         case MATMAP:                                                    // This is the header for the texture info
    00446                                 //std::cout<<"          Read MATMAP"<<std::endl;
    00447                                 ReadObjectMaterial(m_CurrentChunk);
    00448                                 break;
    00449                         case MATMAPFILE:
    00450                                 //std::cout<<"          Read MATMAPFILE"<<std::endl;
    00451                                 Skip(m_CurrentChunk);
    00452                                 break;
    00453                         case MATMAPOPTION:
    00454                                 //std::cout<<"          Read MATMAPOPTION"<<std::endl;
    00455                                 Skip(m_CurrentChunk);
    00456                                 break;
    00457                         case MATMAPFILTERINGBLUR:
    00458                                 //std::cout<<"          Read MATMAPFILTERINGBLUR"<<std::endl;
    00459                                 //Skip(m_CurrentChunk);
    00460                                 Skip(m_CurrentChunk);
    00461                                 break;
    00462                         default:
    00463                                 //std::cout<<"          Skip unused ,Chunk ID:"<<std::hex<<m_CurrentChunk->ID<<" Chunk Lenght:"<<std::dec<<m_CurrentChunk->length<<std::endl;
    00464                                 Skip(m_CurrentChunk);
    00465                                 break;
    00466                         }
    00467                         chunk->bytesRead += m_CurrentChunk->bytesRead;
    00468                 }
    00469                 delete m_CurrentChunk;
    00470                 m_CurrentChunk = chunk;
    00471 UnGuard
    00472 }

void ReadUVCoordinates | ( | t3DObject * | pObject,
|  | tChunk * | chunk
| ) | `[protected]`

| Définition à la ligne 594 du fichier ExCModel3DS.cpp. Références tChunk::bytesRead, Guard, m_filePtr, t3DObject::numTexVertex, ReadUVCoordinates(), ExCVec2D::SetX(), ExCVec2D::SetY(), Skip(), et t3DObject::TexVerts. Référencé par ReadObject(), et ReadUVCoordinates().
    00595 {
    00596 Guard(void ExCModel3DS::ReadUVCoordinates(t3DObject *pObject,tChunk *chunk))
    00597         int buffer[50000] = {0};
    00598         // Read in the number of vertices (int)
    00599         unsigned short vert;
    00600         chunk->bytesRead += fread(&vert, 1,sizeof(unsigned short), m_filePtr);
    00601         pObject->numTexVertex=vert;
    00603         float fl;
    00604         ExCVec2D vec;
    00605         for(int i=0;i<vert;i++)
    00606         {
    00607                 chunk->bytesRead += fread(&fl, 1,sizeof(float), m_filePtr);
    00608                 vec.SetX(fl);
    00609                 chunk->bytesRead += fread(&fl, 1,sizeof(float), m_filePtr);
    00610                 vec.SetY(fl);
    00612                 pObject->TexVerts.push_back(vec);
    00613         }
    00614         Skip(chunk);
    00615 UnGuard
    00616 }

void ReadVertices | ( | t3DObject * | pObject,
|  | tChunk * | chunk
| ) | `[protected]`

| Définition à la ligne 497 du fichier ExCModel3DS.cpp. Références tChunk::bytesRead, Guard, m_filePtr, t3DObject::numOfVerts, ReadVertices(), ExCVec3D::SetX(), ExCVec3D::SetY(), ExCVec3D::SetZ(), Skip(), et t3DObject::Verts. Référencé par ReadObject(), et ReadVertices().
    00498 {
    00499 Guard(void ExCModel3DS::ReadVertices(t3DObject *pObject,tChunk *chunk))
    00500         int buffer[50000] = {0};
    00501         // Read in the number of vertices (int)
    00502         unsigned short vert;
    00503         chunk->bytesRead += fread(&vert, 1,sizeof(unsigned short), m_filePtr);
    00504         pObject->numOfVerts=vert;
    00506         float fl;
    00507         ExCVec3D vec;
    00508         for(int i=0;i<vert;i++)
    00509         {
    00510                 chunk->bytesRead += fread(&fl, 1,sizeof(float), m_filePtr);
    00511                 vec.SetX(fl);
    00512                 chunk->bytesRead += fread(&fl, 1,sizeof(float), m_filePtr);
    00513                 vec.SetY(fl);
    00514                 chunk->bytesRead += fread(&fl, 1,sizeof(float), m_filePtr);
    00515                 vec.SetZ(fl);
    00517                 pObject->Verts.push_back(vec);
    00518         }
    00519         Skip(chunk);
    00520 UnGuard
    00521 }

void Skip | ( | tChunk * | chunk | ) | `[protected]`

| Définition à la ligne 488 du fichier ExCModel3DS.cpp. Références tChunk::bytesRead, Guard, tChunk::length, et m_filePtr. Référencé par Load(), ReadFace(), ReadObject(), ReadObjectInfo(), ReadObjectMaterial(), ReadUVCoordinates(), et ReadVertices().
    00489 {
    00490 Guard(void ExCModel3DS::tChunk Skip(tChunk *chunk))
    00491         int buffer[50000] = {0};
    00493         chunk->bytesRead += fread(buffer, 1, chunk->length - chunk->bytesRead, m_filePtr);
    00494 UnGuard
    00495 }

## Documentation des données imbriquées

tChunk* m_CurrentChunk`[protected]`

| Définition à la ligne 151 du fichier ExCModel3DS.h. Référencé par Load(), ReadFace(), ReadObject(), ReadObjectInfo(), et ReadObjectMaterial().

unsigned int* m_FaceArray`[protected]`

| Définition à la ligne 156 du fichier ExCModel3DS.h. Référencé par BuildArray().

FILE* m_filePtr`[protected]`

| Définition à la ligne 130 du fichier ExCModel3DS.h. Référencé par Load(), ReadChunk(), ReadFace(), ReadObjectInfo(), ReadObjectMaterial(), ReadUVCoordinates(), ReadVertices(), et Skip().

GLuint m_ListId`[protected]`

| Définition à la ligne 153 du fichier ExCModel3DS.h. Référencé par BuildList(), Draw(), et ExCModel3DS().

tChunk* m_TempChunk`[protected]`

| Définition à la ligne 152 du fichier ExCModel3DS.h.

float* m_TextureArray`[protected]`

| Définition à la ligne 157 du fichier ExCModel3DS.h. Référencé par BuildArray().

std::vector<tMaterialInfo> m_VecMaterials`[protected]`

| Définition à la ligne 148 du fichier ExCModel3DS.h.

std::vector<t3DObject> m_VecObject`[protected]`

| Définition à la ligne 149 du fichier ExCModel3DS.h. Référencé par BuildArray(), BuildList(), et ReadObject().

float* m_VertexArray`[protected]`

| Définition à la ligne 155 du fichier ExCModel3DS.h. Référencé par BuildArray().

int numOfMaterials`[protected]`

| Définition à la ligne 147 du fichier ExCModel3DS.h.

int numOfObjects`[protected]`

| Définition à la ligne 146 du fichier ExCModel3DS.h.

La documentation associée à cette classe a été générée à partir des fichiers suivants :

- ExCModel3DS.h
- ExCModel3DS.cpp