bool Viewer::onCreate(LPSTR lpCmdLine) { // show some information std::cout << "o----------------------------------------------------------------o" << std::endl; std::cout << "| Cal3D D3D MiniViewer 0.10.0 |" << std::endl; std::cout << "| (C) 2001, 2002 Bruno 'Beosil' Heidelberger |" << std::endl; std::cout << "| (C) 2002 D3D version by Laurent Desmecht |" << std::endl; std::cout << "o----------------------------------------------------------------o" << std::endl; std::cout << "| This program is free software; you can redistribute it and/or |" << std::endl; std::cout << "| modify it under the terms of the GNU General Public License as |" << std::endl; std::cout << "| published by the Free Software Foundation; either version 2 of |" << std::endl; std::cout << "| the License, or (at your option) any later version. |" << std::endl; std::cout << "o----------------------------------------------------------------o" << std::endl; std::cout << std::endl; bool bModelConfiguration; bModelConfiguration = false; // parse the command line arguments // check for fullscreen flag if(strstr(lpCmdLine, "--fullscreen") != NULL) m_bFullscreen = true; // check for window flag if(strstr(lpCmdLine, "--window") != NULL) m_bFullscreen = false; // check for dimension flag if((strstr(lpCmdLine, "--dimension") != NULL)) { sscanf(strstr(lpCmdLine,"--dimension"),"--dimension %d %d",&m_width,&m_height); if((m_width <= 0) || (m_height <= 0)) { std::cout << "Invalid dimension!" << std::endl; return false; } } // check for help flag if(strstr(lpCmdLine, "--help") != NULL) { std::cout << "Usage: " << "cal3d_miniviewer_d3d.exe" << " [--fullscreen] [--window] [--dimension width height] [--help] model-configuration-file" << std::endl; MessageBox(g_hWnd, "cal3d_miniviewer_d3d.exe [--fullscreen] [--window] [--dimension width height] [--help] model-configuration-file [> output-file]", "Usage",MB_OK); return false; } char *str; int i=0; int fileincmd=0; while(lpCmdLine[i]!=0) { if(i==0) { if(lpCmdLine[i]!='-' && lpCmdLine[i]!=' ') { fileincmd=1; str=&lpCmdLine[i]; } } else if(lpCmdLine[i]!='-' && lpCmdLine[i-1]==' ') { str=&lpCmdLine[i]; fileincmd=1; } i++; } if(fileincmd) { i=0; while(str[i]!=0) { if(str[i]==' ') str[i]=0; i++; } // parse the model configuration file if(!parseModelConfiguration(str)) return false; // set model configuration flag bModelConfiguration = true; } // check if we have successfully loaded a model configuration if(!bModelConfiguration) { MessageBox(g_hWnd, "cal3d_miniviewer_d3d.exe [--fullscreen] [--window] [--dimension width height] [--help] model-configuration-file [> output-file]", "Usage",MB_OK); std::cout << "No model configuration file given." << std::endl; return false; } // make one material thread for each material // NOTE: this is not the right way to do it, but this viewer can't do the right // mapping without further information on the model etc., so this is the only // thing we can do here. int materialId; for(materialId = 0; materialId < m_calCoreModel->getCoreMaterialCount(); materialId++) { // create the a material thread m_calCoreModel->createCoreMaterialThread(materialId); // initialize the material thread m_calCoreModel->setCoreMaterialId(materialId, 0, materialId); } m_calModel = new CalModel(m_calCoreModel); return true; }
bool Viewer::onCreate(int argc, char *argv[]) { // show some information std::cout << "o----------------------------------------------------------------o" << std::endl; std::cout << "| Cal3D MiniViewer 0.9 |" << std::endl; std::cout << "| (C) 2001, 2002, 2003 Bruno 'Beosil' Heidelberger |" << std::endl; std::cout << "o----------------------------------------------------------------o" << std::endl; std::cout << "| This program is free software; you can redistribute it and/or |" << std::endl; std::cout << "| modify it under the terms of the GNU General Public License as |" << std::endl; std::cout << "| published by the Free Software Foundation; either version 2 of |" << std::endl; std::cout << "| the License, or (at your option) any later version. |" << std::endl; std::cout << "o----------------------------------------------------------------o" << std::endl; std::cout << std::endl; bool bModelConfiguration; bModelConfiguration = false; // parse the command line arguments int arg; for(arg = 1; arg < argc; arg++) { // check for fullscreen flag if(strcmp(argv[arg], "--fullscreen") == 0) m_bFullscreen = true; // check for window flag else if(strcmp(argv[arg], "--window") == 0) m_bFullscreen = false; // check for dimension flag else if((strcmp(argv[arg], "--dimension") == 0) && (argc - arg > 2)) { m_width = atoi(argv[++arg]); m_height = atoi(argv[++arg]); if((m_width <= 0) || (m_height <= 0)) { std::cerr << "Invalid dimension!" << std::endl; return false; } } // check for help flag else if(strcmp(argv[arg], "--help") == 0) { std::cerr << "Usage: " << argv[0] << " [--fullscreen] [--window] [--dimension width height] [--help] model-configuration-file" << std::endl; return false; } // must be the model configuration file then else { // parse the model configuration file if(!parseModelConfiguration(argv[arg])) return false; // set model configuration flag bModelConfiguration = true; } } // check if we have successfully loaded a model configuration if(!bModelConfiguration) { std::cerr << "No model configuration file given." << std::endl; return false; } // make one material thread for each material // NOTE: this is not the right way to do it, but this viewer can't do the right // mapping without further information on the model etc., so this is the only // thing we can do here. int materialId; for(materialId = 0; materialId < m_calCoreModel->getCoreMaterialCount(); materialId++) { // create the a material thread m_calCoreModel->createCoreMaterialThread(materialId); // initialize the material thread m_calCoreModel->setCoreMaterialId(materialId, 0, materialId); } m_calModel = new CalModel(m_calCoreModel); return true; }