Ignore:
Timestamp:
11/07/05 23:17:14 (19 years ago)
Author:
bittner
Message:

vss preprocessor updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/GtpVisibilityPreprocessor/src/Preprocessor.cpp

    r372 r387  
    9292} 
    9393 
     94int 
     95SplitFilenames(const string str, 
     96                                                         vector<string> &filenames) 
     97{ 
     98        int pos = 0; 
     99 
     100        while(1) { 
     101                int npos = str.find(';', pos); 
     102                 
     103                if (npos < 0 || npos - pos < 1) 
     104                        break; 
     105                filenames.push_back(string(str, pos, npos - pos)); 
     106                pos = npos + 1; 
     107        } 
     108         
     109        filenames.push_back(string(str, pos, str.size() - pos)); 
     110        return filenames.size(); 
     111} 
     112 
    94113bool 
    95114Preprocessor::LoadScene(const string filename) 
     
    101120   
    102121  Parser *parser; 
    103  
    104   if (strstr(filename.c_str(), ".x3d")) 
    105     parser = new X3dParser; 
    106   else 
    107     parser = new UnigraphicsParser; 
    108  
    109   bool result = parser->ParseFile(filename, &mSceneGraph->mRoot); 
    110  
    111          
    112          
    113   delete parser; 
    114  
    115         if (result) 
     122        vector<string> filenames; 
     123        int files = SplitFilenames(filename, filenames); 
     124        cout<<files<<endl; 
     125        bool result = false; 
     126        if (files == 1) { 
     127                 
     128                if (strstr(filename.c_str(), ".x3d")) 
     129                        parser = new X3dParser; 
     130                else 
     131                        parser = new UnigraphicsParser; 
     132 
     133                cout<<filename<<endl; 
     134                result = parser->ParseFile(filename, &mSceneGraph->mRoot); 
     135 
     136                delete parser; 
     137 
     138        } else { 
     139                // root for different files 
     140                mSceneGraph->mRoot = new SceneGraphNode; 
     141                for (int i= 0; i < filenames.size(); i++) { 
     142                        if (strstr(filenames[i].c_str(), ".x3d")) 
     143                                parser = new X3dParser; 
     144                        else 
     145                                parser = new UnigraphicsParser; 
     146                         
     147                        SceneGraphNode *node; 
     148                        if (parser->ParseFile(filenames[i], &node)) { 
     149                                mSceneGraph->mRoot->mChildren.push_back(node); 
     150                                // at least one file parsed 
     151                                result = true; 
     152                        } 
     153                        delete parser; 
     154                } 
     155        } 
     156         
     157 
     158        if (result) { 
    116159                mSceneGraph->AssignObjectIds(); 
     160                int intersectables, faces; 
     161                mSceneGraph->GetStatistics(intersectables, faces); 
     162                cout<<filename<<" parsed successfully."<<endl; 
     163                cout<<"#NUM_OBJECTS (Total numner of objects)\n"<<intersectables<<endl; 
     164                cout<<"#NUM_FACES (Total numner of faces)\n"<<faces<<endl; 
     165        } 
     166 
    117167         
    118168  return result; 
Note: See TracChangeset for help on using the changeset viewer.