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

# Asc2MapDlg.cpp

Aller à la documentation de ce fichier.

    00001 // Asc2MapDlg.cpp : fichier d'implémentation
    00002 //
    00003
    00004 #include "stdafx.h"
    00005 #include "Asc2Map.h"
    00006 #include "Asc2MapDlg.h"
    00007
    00008 #ifdef _DEBUG
    00009 #define new DEBUG_NEW
    00010 #endif
    00011
    00012
    00013 // boîte de dialogue CAboutDlg utilisée pour la boîte de dialogue 'À propos de' pour votre application
    00014
    00015 class CAboutDlg : public CDialog
    00016 {
    00017 public:
    00018         CAboutDlg();
    00019
    00020 // Données de la boîte de dialogue
    00021         enum { IDD = IDD_ABOUTBOX };
    00022
    00023         protected:
    00024         virtual void DoDataExchange(CDataExchange* pDX);    // prise en charge de DDX/DDV
    00025
    00026 // Implémentation
    00027 protected:
    00028         DECLARE_MESSAGE_MAP()
    00029 };
    00030
    00031 CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
    00032 {
    00033 }
    00034
    00035 void CAboutDlg::DoDataExchange(CDataExchange* pDX)
    00036 {
    00037         CDialog::DoDataExchange(pDX);
    00038 }
    00039
    00040 BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    00041 END_MESSAGE_MAP()
    00042
    00043
    00044 // boîte de dialogue CAsc2MapDlg
    00045
    00046
    00047
    00048 CAsc2MapDlg::CAsc2MapDlg(CWnd* pParent /*=NULL*/)
    00049         : CDialog(CAsc2MapDlg::IDD, pParent)
    00050         , m_SAscFileName(_T(""))
    00051         , m_SMapFile(_T(""))
    00052         , m_STextureName(_T("NONE"))
    00053         , m_STextureNameBottom(_T("NONE"))
    00054         , m_STextureNameFront(_T("NONE"))
    00055         , m_STextureNameBack(_T("NONE"))
    00056         , m_STextureNameLeft(_T("NONE"))
    00057         , m_STextureNameRight(_T("NONE"))
    00058 {
    00059         m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    00060 }
    00061
    00062 void CAsc2MapDlg::DoDataExchange(CDataExchange* pDX)
    00063 {
    00064         CDialog::DoDataExchange(pDX);
    00065         DDX_Text(pDX, IDC_EDITASCFILE, m_SAscFileName);
    00066         DDX_Text(pDX, IDC_EDITMAPFILE, m_SMapFile);
    00067         DDX_Text(pDX, IDC_EDITTEXTURE, m_STextureName);
    00068         DDX_Control(pDX, IDC_EDITASCFILE, m_CAscFile);
    00069         DDX_Text(pDX, IDC_EDIT4, m_STextureNameBottom);
    00070         DDX_Text(pDX, IDC_EDIT5, m_STextureNameFront);
    00071         DDX_Text(pDX, IDC_EDIT6, m_STextureNameBack);
    00072         DDX_Text(pDX, IDC_EDIT7, m_STextureNameLeft);
    00073         DDX_Text(pDX, IDC_EDIT8, m_STextureNameRight);
    00074 }
    00075
    00076 BEGIN_MESSAGE_MAP(CAsc2MapDlg, CDialog)
    00077         ON_WM_SYSCOMMAND()
    00078         ON_WM_PAINT()
    00079         ON_WM_QUERYDRAGICON()
    00080         //}}AFX_MSG_MAP
    00081         ON_BN_CLICKED(IDOK, OnBnClickedOk)
    00082         ON_BN_CLICKED(IDC_BUTBROWSEASC, OnBnClickedButbrowseasc)
    00083         ON_BN_CLICKED(IDC_BUTBROWSETEXTTOP, OnBnClickedButbrowsetexttop)
    00084         ON_BN_CLICKED(IDC_BUTBROWSETEXTBOTTOM, OnBnClickedButbrowsetextbottom)
    00085         ON_BN_CLICKED(IDC_BUTBROWSETEXTFRONT, OnBnClickedButbrowsetextfront)
    00086         ON_BN_CLICKED(IDC_BUTBROWSETEXTBACK, OnBnClickedButbrowsetextback)
    00087         ON_BN_CLICKED(IDC_BUTBROWSETEXTLEFT, OnBnClickedButbrowsetextleft)
    00088         ON_BN_CLICKED(IDC_BUTBROWSETEXTRIGHT, OnBnClickedButbrowsetextright)
    00089         ON_BN_CLICKED(IDC_BUTBROWSEMAPFILE, OnBnClickedButbrowsemapfile)
    00090 END_MESSAGE_MAP()
    00091
    00092
    00093 // gestionnaires de messages pour CAsc2MapDlg
    00094
    00095 BOOL CAsc2MapDlg::OnInitDialog()
    00096 {
    00097         CDialog::OnInitDialog();
    00098
    00099         // Ajouter l'élément de menu "À propos de..." au menu Système.
    00100
    00101         // IDM_ABOUTBOX doit se trouver dans la plage des commandes système.
    00102         ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    00103         ASSERT(IDM_ABOUTBOX < 0xF000);
    00104
    00105         CMenu* pSysMenu = GetSystemMenu(FALSE);
    00106         if (pSysMenu != NULL)
    00107         {
    00108                 CString strAboutMenu;
    00109                 strAboutMenu.LoadString(IDS_ABOUTBOX);
    00110                 if (!strAboutMenu.IsEmpty())
    00111                 {
    00112                         pSysMenu->AppendMenu(MF_SEPARATOR);
    00113                         pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    00114                 }
    00115         }
    00116
    00117         // Définir l'icône de cette boîte de dialogue. L'infrastructure effectue cela automatiquement
    00118         //  lorsque la fenêtre principale de l'application n'est pas une boîte de dialogue
    00119         SetIcon(m_hIcon, TRUE);                 // Définir une grande icône
    00120         SetIcon(m_hIcon, FALSE);                // Définir une petite icône
    00121
    00122         // TODO : ajoutez ici une initialisation supplémentaire
    00123
    00124         return TRUE;  // retourner TRUE, sauf si vous avez défini le focus sur un contrôle
    00125 }
    00126
    00127 void CAsc2MapDlg::OnSysCommand(UINT nID, LPARAM lParam)
    00128 {
    00129         if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    00130         {
    00131                 CAboutDlg dlgAbout;
    00132                 dlgAbout.DoModal();
    00133         }
    00134         else
    00135         {
    00136                 CDialog::OnSysCommand(nID, lParam);
    00137         }
    00138 }
    00139
    00140 // Si vous ajoutez un bouton Réduire à votre boîte de dialogue, vous devez utiliser le code ci-dessous
    00141 //  pour dessiner l'icône. Pour les applications MFC utilisant le modèle Document/Vue,
    00142 //  cela est fait automatiquement par l'infrastructure.
    00143
    00144 void CAsc2MapDlg::OnPaint()
    00145 {
    00146         if (IsIconic())
    00147         {
    00148                 CPaintDC dc(this); // contexte de périphérique pour la peinture
    00149
    00150                 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
    00151
    00152                 // Centrer l'icône dans le rectangle client
    00153                 int cxIcon = GetSystemMetrics(SM_CXICON);
    00154                 int cyIcon = GetSystemMetrics(SM_CYICON);
    00155                 CRect rect;
    00156                 GetClientRect(&rect);
    00157                 int x = (rect.Width() - cxIcon + 1) / 2;
    00158                 int y = (rect.Height() - cyIcon + 1) / 2;
    00159
    00160                 // Dessiner l'icône
    00161                 dc.DrawIcon(x, y, m_hIcon);
    00162         }
    00163         else
    00164         {
    00165                 CDialog::OnPaint();
    00166         }
    00167 }
    00168
    00169 // Le système appelle cette fonction pour obtenir le curseur à afficher lorsque l'utilisateur fait glisser
    00170 //  la fenêtre réduite.
    00171 HCURSOR CAsc2MapDlg::OnQueryDragIcon()
    00172 {
    00173         return static_cast<HCURSOR>(m_hIcon);
    00174 }
    00175
    00176 void CAsc2MapDlg::OnBnClickedOk()
    00177 {
    00178         // TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle
    00179         UpdateData(true);
    00180         // 1 check if we have all argument to start
    00181     if(m_SAscFileName.IsEmpty())
    00182         {
    00183                 AfxMessageBox("You must select a model file");
    00184                 return;
    00185         }
    00186         if(m_SMapFile.IsEmpty())
    00187         {
    00188                 AfxMessageBox("You must select a file to save the map");
    00189                 return;
    00190         }
    00191         // 2 create map file
    00192         CreateMapFile();
    00193
    00194
    00195 }
    00196
    00197 void CAsc2MapDlg::OnBnClickedButbrowseasc()
    00198 {
    00199         // TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle
    00200         char szFilters[]="Asc Model Files (*.asc)|*.asc|All Files (*.*)|*.*||";
    00201         CFileDialog     fileDlg(true,"*.asc",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters,this);
    00202         if(fileDlg.DoModal()==IDOK)
    00203         {
    00204                 m_SAscFileName=fileDlg.GetPathName();
    00205         }
    00206         UpdateData(false);
    00207 }
    00208
    00209
    00210 void CAsc2MapDlg::OnBnClickedButbrowsetexttop()
    00211 {
    00212         // TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle
    00213         char szFilters[]="Texture Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
    00214         CFileDialog     fileDlg(true,"*.bmp",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters,this);
    00215         if(fileDlg.DoModal()==IDOK)
    00216         {
    00217                 m_STextureName = fileDlg.GetFileName ();
    00218
    00219         }
    00220         UpdateData(false);
    00221 }
    00222
    00223 void CAsc2MapDlg::OnBnClickedButbrowsetextbottom()
    00224 {
    00225         // TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle
    00226         char szFilters[]="Texture Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
    00227         CFileDialog     fileDlg(true,"*.bmp",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters,this);
    00228         if(fileDlg.DoModal()==IDOK)
    00229         {
    00230                 m_STextureNameBottom = fileDlg.GetFileName ();
    00231         }
    00232         UpdateData(false);
    00233 }
    00234
    00235 void CAsc2MapDlg::OnBnClickedButbrowsetextfront()
    00236 {
    00237         // TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle
    00238         char szFilters[]="Texture Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
    00239         CFileDialog     fileDlg(true,"*.bmp",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters,this);
    00240         if(fileDlg.DoModal()==IDOK)
    00241         {
    00242                 m_STextureNameFront = fileDlg.GetFileName ();
    00243         }
    00244         UpdateData(false);
    00245 }
    00246
    00247 void CAsc2MapDlg::OnBnClickedButbrowsetextback()
    00248 {
    00249         // TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle
    00250         char szFilters[]="Texture Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
    00251         CFileDialog     fileDlg(true,"*.bmp",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters,this);
    00252         if(fileDlg.DoModal()==IDOK)
    00253         {
    00254                 m_STextureNameBack = fileDlg.GetFileName ();
    00255         }
    00256         UpdateData(false);
    00257 }
    00258
    00259 void CAsc2MapDlg::OnBnClickedButbrowsetextleft()
    00260 {
    00261         // TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle
    00262         char szFilters[]="Texture Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
    00263         CFileDialog     fileDlg(true,"*.bmp",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters,this);
    00264         if(fileDlg.DoModal()==IDOK)
    00265         {
    00266                 m_STextureNameLeft = fileDlg.GetFileName ();
    00267         }
    00268         UpdateData(false);
    00269 }
    00270
    00271 void CAsc2MapDlg::OnBnClickedButbrowsetextright()
    00272 {
    00273         // TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle
    00274         char szFilters[]="Texture Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
    00275         CFileDialog     fileDlg(true,"*.bmp",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters,this);
    00276         if(fileDlg.DoModal()==IDOK)
    00277         {
    00278                 m_STextureNameRight = fileDlg.GetFileName ();
    00279         }
    00280         UpdateData(false);
    00281 }
    00282
    00283 void CAsc2MapDlg::OnBnClickedButbrowsemapfile()
    00284 {
    00285         // TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle
    00286         char szFilters[]="Texture Files (*.map)|*.map|All Files (*.*)|*.*||";
    00287         CFileDialog     fileDlg(false,"*.map",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters,this);
    00288         if(fileDlg.DoModal()==IDOK)
    00289         {
    00290                 m_SMapFile = fileDlg.GetPathName();
    00291         }
    00292         UpdateData(false);
    00293 }
    00294
    00295 void CAsc2MapDlg::CreateMapFile(void)
    00296 {
    00297         //1 read asc data
    00298         bool                    endfile=false;
    00299         int                             FileSize;
    00300         size_t                  RetVal;
    00301         int                             TmpFilePosition;
    00302         int                             i,j,k;
    00303         int                             TotalMash=0;
    00304         int                             TotalNumberofVertex=0;
    00305         int                             TotalNumberofFace=0;
    00306         std::vector<SVertex> m_VecVertex;
    00307         std::vector<SVertex>::iterator m_ItVecVertex;
    00308         std::vector<SMesh> m_VecMesh;
    00309         std::vector<SMesh>::iterator m_ItVecMesh;
    00310
    00311         AscFile=fopen (m_SAscFileName,"r");
    00312
    00313         if(!AscFile)
    00314         {
    00315                 AfxMessageBox("Error opening asc file");
    00316                 return;
    00317         }
    00318
    00319         fseek(AscFile,0,SEEK_END);
    00320         FileSize=ftell(AscFile);
    00321
    00322         //Start of file
    00323         fseek(AscFile,0,SEEK_SET);
    00324         do
    00325         {
    00326                 bool                    Textured=false;
    00327                 char                    ch;
    00328                 CString                 SName;
    00329                 CString                 SNumber;
    00330                 int                             NumberofVertex;
    00331                 int                             NumberofFace;
    00332                 SVertex                 VertexBuff;
    00333                 SMesh                   MeshBuff;
    00334                 //------------------
    00335                 //Read object name
    00336                 //------------------
    00337                 do
    00338                 {
    00339                         RetVal=fread(&ch,sizeof(char),1,AscFile);
    00340                 }while(ch!=34);
    00341                 TmpFilePosition=ftell(AscFile);//remember where name start
    00342                 i=0;
    00343                 do
    00344                 {
    00345                         RetVal=fread(&ch,sizeof(char),1,AscFile);i++;
    00346                 }while(ch!=34);
    00347                 fseek(AscFile,TmpFilePosition,SEEK_SET);
    00348                 for(j=0;j<i-1;j++)
    00349                 {
    00350                         RetVal=fread(&ch,sizeof(char),1,AscFile);
    00351                         SName=SName+ch;
    00352                 }
    00353
    00354                 //-----------------------------
    00355                 //Read number of vertex en face
    00356                 //-----------------------------
    00357                 do
    00358                 {
    00359                         RetVal=fread(&ch,sizeof(char),1,AscFile);
    00360                 }while(ch!=':');
    00361                 RetVal=fread(&ch,sizeof(char),1,AscFile);//one more to skip the space
    00362                 do
    00363                 {
    00364                         RetVal=fread(&ch,sizeof(char),1,AscFile);
    00365                         SNumber=SNumber+ch;
    00366                 }while(ch!=' ');
    00367                 NumberofVertex=(atol(SNumber));
    00368
    00369                 SNumber.Delete(0,SNumber.GetLength());
    00370                 do
    00371                 {
    00372                         RetVal=fread(&ch,sizeof(char),1,AscFile);
    00373                 }while(ch!=':');
    00374                 RetVal=fread(&ch,sizeof(char),1,AscFile);//one more to skip the space
    00375                 do
    00376                 {
    00377                         RetVal=fread(&ch,sizeof(char),1,AscFile);
    00378                         SNumber=SNumber+ch;
    00379                 }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
    00380                                         ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
    00381                 NumberofFace=(atol(SNumber));
    00382
    00383
    00384
    00385                 //-----------------------------
    00386                 //Read vertex
    00387                 //-----------------------------
    00388                 for(j=0;j<NumberofVertex;j++)
    00389                 {
    00390                         SNumber.Delete(0,SNumber.GetLength());
    00391                         do
    00392                         {
    00393                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00394                         }while(ch!='X');
    00395                         RetVal=fread(&ch,sizeof(char),1,AscFile);//one more to skip :
    00396                         do
    00397                         {
    00398                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00399                                 SNumber=SNumber+ch;
    00400                         }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
    00401                                         ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
    00402                         try
    00403                         {
    00404                                 VertexBuff.x=atof(SNumber);
    00405                         }catch(...)
    00406                         {
    00407                                 VertexBuff.x=(0.0f);
    00408                         }
    00409                         //-------------------------------------------------------------
    00410                         SNumber.Delete(0,SNumber.GetLength());
    00411                         do
    00412                         {
    00413                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00414                         }while(ch!='Y');
    00415                         RetVal=fread(&ch,sizeof(char),1,AscFile);//one more to skip :
    00416                         do
    00417                         {
    00418                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00419                                 SNumber=SNumber+ch;
    00420                         }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
    00421                                         ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
    00422                         try
    00423                         {
    00424                                 VertexBuff.y=atof(SNumber);
    00425                         }catch(...)
    00426                         {
    00427                                 VertexBuff.y=0.0f;
    00428                         }
    00429                         //-------------------------------------------------------------
    00430                         SNumber.Delete(0,SNumber.GetLength());
    00431                         do
    00432                         {
    00433                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00434                         }while(ch!='Z');
    00435                         RetVal=fread(&ch,sizeof(char),1,AscFile);//one more to skip :
    00436                         do
    00437                         {
    00438                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00439                                 SNumber=SNumber+ch;
    00440                         }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
    00441                                         ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
    00442                         try
    00443                         {
    00444                                 VertexBuff.z=atof(SNumber);
    00445                         }catch(...)
    00446                         {
    00447                                 VertexBuff.z=0.0f;
    00448                         }
    00449                         //--------------------------------------------------------------
    00450                         RetVal=fread(&ch,sizeof(char),1,AscFile);
    00451                         if(ch==' ')//if object has U and V value
    00452                         {
    00453                                 Textured=true;
    00454                                 //-------------------------------------------------------------
    00455                                 SNumber.Delete(0,SNumber.GetLength());
    00456                                 do
    00457                                 {
    00458                                         RetVal=fread(&ch,sizeof(char),1,AscFile);
    00459                                 }while(ch!='U');
    00460                                 RetVal=fread(&ch,sizeof(char),1,AscFile);//one more to skip :
    00461                                 do
    00462                                 {
    00463                                         RetVal=fread(&ch,sizeof(char),1,AscFile);
    00464                                         SNumber=SNumber+ch;
    00465                                 }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
    00466                                                 ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
    00467                                 VertexBuff.u=atof(SNumber);
    00468                                 //-------------------------------------------------------------
    00469                                 SNumber.Delete(0,SNumber.GetLength());
    00470                                 do
    00471                                 {
    00472                                         RetVal=fread(&ch,sizeof(char),1,AscFile);
    00473                                 }while(ch!='V');
    00474                                 RetVal=fread(&ch,sizeof(char),1,AscFile);//one more to skip :
    00475                                 do
    00476                                 {
    00477                                         RetVal=fread(&ch,sizeof(char),1,AscFile);
    00478                                         SNumber=SNumber+ch;
    00479                                 }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
    00480                                                 ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
    00481                                 VertexBuff.v=atof(SNumber);
    00482                                 //-------------------------------------------------------------
    00483                         }else
    00484                         {
    00485                                 VertexBuff.u=0;
    00486                                 VertexBuff.v=0;
    00487                         }
    00488                         m_VecVertex.push_back(VertexBuff);
    00489
    00490                 }
    00491                 //-----------------------------
    00492                 //Read face
    00493                 //-----------------------------
    00494                 TotalMash=TotalMash+NumberofFace;
    00495                 for(j=0;j<NumberofFace;j++)
    00496                 {
    00497                         SNumber.Delete(0,SNumber.GetLength());
    00498                         do
    00499                         {
    00500                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00501                         }while(ch!='A');
    00502                         RetVal=fread(&ch,sizeof(char),1,AscFile);//one more to skip :
    00503
    00504                         do
    00505                         {
    00506                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00507                                 SNumber=SNumber+ch;
    00508                         }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
    00509                                         ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
    00510                         MeshBuff.A=(atoi(SNumber)+TotalNumberofVertex);
    00511
    00512                         //-------------------------------------------------------------
    00513                         SNumber.Delete(0,SNumber.GetLength());
    00514                         do
    00515                         {
    00516                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00517                         }while(ch!='B');
    00518                         RetVal=fread(&ch,sizeof(char),1,AscFile);//one more to skip :
    00519                         do
    00520                         {
    00521                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00522                                 SNumber=SNumber+ch;
    00523                         }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
    00524                                         ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
    00525                         MeshBuff.B=(atoi(SNumber)+TotalNumberofVertex);
    00526                         //-------------------------------------------------------------
    00527                         SNumber.Delete(0,SNumber.GetLength());
    00528                         do
    00529                         {
    00530                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00531                         }while(ch!='C');
    00532                         RetVal=fread(&ch,sizeof(char),1,AscFile);//one more to skip :
    00533                         do
    00534                         {
    00535                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00536                                 SNumber=SNumber+ch;
    00537                         }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
    00538                                         ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
    00539                         MeshBuff.C=(atoi(SNumber)+TotalNumberofVertex);
    00540                         //------------------------------------------------------------
    00541                         do
    00542                         {
    00543                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00544                         }while(ch!='B');
    00545                         RetVal=fread(&ch,sizeof(char),1,AscFile);//one more to skip :
    00546                         SNumber.Delete(0,SNumber.GetLength());
    00547                         do
    00548                         {
    00549                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00550                                 SNumber=SNumber+ch;
    00551                         }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
    00552                                         ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
    00553                         MeshBuff.AB=atoi(SNumber);
    00554                         do
    00555                         {
    00556                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00557                         }while(ch!='C');
    00558                         RetVal=fread(&ch,sizeof(char),1,AscFile);//one more to skip :
    00559                         SNumber.Delete(0,SNumber.GetLength());
    00560                         do
    00561                         {
    00562                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00563                                 SNumber=SNumber+ch;
    00564                         }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
    00565                                         ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
    00566                         MeshBuff.BC=atoi(SNumber);
    00567                         do
    00568                         {
    00569                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00570                         }while(ch!='A');
    00571                         RetVal=fread(&ch,sizeof(char),1,AscFile);//one more to skip :
    00572                         SNumber.Delete(0,SNumber.GetLength());
    00573                         do
    00574                         {
    00575                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00576                                 SNumber=SNumber+ch;
    00577                         }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
    00578                                         ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
    00579                         MeshBuff.CA=atoi(SNumber);
    00580                         if(Textured)
    00581                         {
    00582                                 //-----------------------------
    00583                                 //Read material
    00584                                 //-----------------------------
    00585                                 CString Material;
    00586                         do
    00587                                 {
    00588                                         RetVal=fread(&ch,sizeof(char),1,AscFile);
    00589                                 }while(ch!=34);
    00590                                 TmpFilePosition=ftell(AscFile);//remember where name start
    00591                                 i=0;
    00592                                 do
    00593                                 {
    00594                                         RetVal=fread(&ch,sizeof(char),1,AscFile);i++;
    00595                                 }while(ch!=34);
    00596                                 fseek(AscFile,TmpFilePosition,SEEK_SET);
    00597                                 for(k=0;k<i-1;k++)
    00598                                 {
    00599                                         RetVal=fread(&ch,sizeof(char),1,AscFile);
    00600                                         Material=Material+ch;
    00601                                 }
    00602
    00603                                 memset(MeshBuff.Texture,256,0);
    00604                                 sprintf(MeshBuff.Texture,"%s",Material);
    00605                         }else
    00606                         {
    00607                                 memset(MeshBuff.Texture,255,0);
    00608                                 sprintf(MeshBuff.Texture,"NONE");
    00609                         }
    00610                         //-----------------------------
    00611                         //Read Smoothing
    00612                         //-----------------------------
    00613                         do
    00614                         {
    00615                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00616                         }while(ch!=':');
    00617                         RetVal=fread(&ch,sizeof(char),1,AscFile);//one more to skip espace
    00618                         SNumber.Delete(0,SNumber.GetLength());
    00619                         do
    00620                         {
    00621                                 RetVal=fread(&ch,sizeof(char),1,AscFile);
    00622                                 SNumber=SNumber+ch;
    00623                         }while(ch=='0'||ch=='1'||ch=='2'||ch=='3'||ch=='4'||ch=='5'||
    00624                                         ch=='6'||ch=='7'||ch=='8'||ch=='9'||ch=='.'||ch=='-');
    00625                         MeshBuff.S=atoi(SNumber);
    00626
    00627                         m_VecMesh.push_back(MeshBuff);
    00628                 }
    00629
    00630
    00631                 TotalNumberofVertex=TotalNumberofVertex+NumberofVertex;
    00632                 TotalNumberofFace=TotalNumberofFace+NumberofFace;
    00633
    00634                 TmpFilePosition=ftell(AscFile);//where i am?
    00635                 if(TmpFilePosition+100>FileSize)
    00636                 {
    00637                         endfile=true;
    00638                 }else
    00639                 {
    00640                         endfile=false;
    00641                 }
    00642         }while(!endfile);
    00643         fclose(AscFile);
    00644
    00645         //first texture box list
    00646         MapFile=fopen(m_SMapFile,"w+");
    00647         if(!MapFile)
    00648         {
    00649                 AfxMessageBox("Error creating map file");
    00650                 return;
    00651         }
    00652         char Buff[255];
    00653         memset(Buff,0,255);
    00654         sprintf(Buff,"#map#\n");
    00655         sprintf(Buff,"<filetype>map<#filetype>\n");
    00656         fwrite(Buff,strlen(Buff),1,MapFile);
    00657
    00658         memset(Buff,0,255);
    00659         sprintf(Buff,"<skybox_top>%s<#skybox_top>\n",m_STextureName);
    00660         fwrite(Buff,strlen(Buff),1,MapFile);
    00661
    00662         memset(Buff,0,255);
    00663         sprintf(Buff,"<skybox_bottom>%s<#skybox_bottom>\n",m_STextureNameBottom);
    00664         fwrite(Buff,strlen(Buff),1,MapFile);
    00665
    00666         memset(Buff,0,255);
    00667         sprintf(Buff,"<skybox_front>%s<#skybox_front>\n",m_STextureNameFront);
    00668         fwrite(Buff,strlen(Buff),1,MapFile);
    00669
    00670         memset(Buff,0,255);
    00671         sprintf(Buff,"<skybox_back>%s<#skybox_back>\n",m_STextureNameBack);
    00672         fwrite(Buff,strlen(Buff),1,MapFile);
    00673
    00674         memset(Buff,0,255);
    00675         sprintf(Buff,"<skybox_left>%s<#skybox_left>\n",m_STextureNameLeft);
    00676         fwrite(Buff,strlen(Buff),1,MapFile);
    00677
    00678         memset(Buff,0,255);
    00679         sprintf(Buff,"<skybox_right>%s<#skybox_right>\n",m_STextureNameRight);
    00680         fwrite(Buff,strlen(Buff),1,MapFile);
    00681
    00682         //write vertex
    00683         memset(Buff,0,255);
    00684         sprintf(Buff,"<number_vertex>%d<#number_vertex>\n",TotalNumberofVertex);
    00685         fwrite(Buff,strlen(Buff),1,MapFile);
    00686
    00687         for(m_ItVecVertex=m_VecVertex.begin();m_ItVecVertex!=m_VecVertex.end();m_ItVecVertex++)
    00688         {
    00689                 memset(Buff,0,255);
    00690                 sprintf(Buff,"<vertex_data><X>%f<#X><Y>%f<#Y><Z>%f<#Z><U>%f<#U><V>%f<#V><#vertex_data>\n",m_ItVecVertex->x,m_ItVecVertex->y,m_ItVecVertex->z,m_ItVecVertex->u,m_ItVecVertex->v);
    00691         fwrite(Buff,strlen(Buff),1,MapFile);
    00692         }
    00693         //write mesh
    00694         memset(Buff,0,255);
    00695         sprintf(Buff,"<number_mesh>%d<#number_mesh>\n",TotalNumberofFace);
    00696         fwrite(Buff,strlen(Buff),1,MapFile);
    00697
    00698         SMesh                   MeshBuf;
    00699         for(m_ItVecMesh=m_VecMesh.begin();m_ItVecMesh!=m_VecMesh.end();m_ItVecMesh++)
    00700         {
    00701                 memset(Buff,0,255);
    00702                 sprintf(Buff,"<mesh_data><A>%d<#A><B>%d<#B><C>%d<C#><AB>%d<#AB><CA>%d<#CA><BC>%d<#BC><texture>%s<#texture><smothing>%d<#smothing><#mesh_data>\n",
    00703                         m_ItVecMesh->A,
    00704                         m_ItVecMesh->B,
    00705                         m_ItVecMesh->C,
    00706                         m_ItVecMesh->AB,
    00707                         m_ItVecMesh->CA,
    00708                         m_ItVecMesh->BC,
    00709                         m_ItVecMesh->Texture,
    00710                         m_ItVecMesh->S);
    00711         fwrite(Buff,strlen(Buff),1,MapFile);
    00712         }
    00713     AfxMessageBox("Map file ok");
    00714         fclose(MapFile);
    00715 }