void ModelContainerView::showMap(MapTree* mt, std::string dirFileName) {
     if(mt->hasDirFile(dirFileName)) {
         FilesInDir filesInDir = mt->getDirFiles(dirFileName);
         if(filesInDir.getRefCount() == 1) {
             Array<std::string> fileNames = filesInDir.getFiles();
             for(int i=0; i<fileNames.size(); ++i) {
                 std::string name = fileNames[i];
                 ManagedModelContainer* mc = mt->getModelContainer(name);
                 //if(mc->getNSubModel() == 791) {
                 addModelContainer(name, mc);
                 //}
             }
         }
     }
 }
 void
 ModelContainerView::parseVMap (MapTree* mt, std::string dirFileName)
 {
     printf("[VMAP]Parsing: %s\n", dirFileName.c_str());
     if (mt->hasDirFile (dirFileName))
     {
       FilesInDir filesInDir = mt->getDirFiles (dirFileName);
       if (filesInDir.getRefCount () == 1)
         {
           Array<std::string> fileNames = filesInDir.getFiles ();
           for (int i = 0; i < fileNames.size (); ++i)
             {
               std::string name = fileNames[i];
               ManagedModelContainer* mc = mt->getModelContainer (name);
               addModelContainer (name, mc );
             }
         }
     }
 }
Exemple #3
0
 bool MapTree::loadMap(const std::string& pDirFileName, unsigned int pMapTileIdent)
 {
     bool result = true;
     if(!hasDirFile(pDirFileName))
     {
         FilesInDir filesInDir;
         result = false;
         std::string fb = iBasePath + pDirFileName;
         FILE* df = fopen(fb.c_str(), "rb");
         if(df)
         {
             char lineBuffer[FILENAMEBUFFER_SIZE];
             result = true;
             bool newModelLoaded = false;
             while(result && (fgets(lineBuffer, FILENAMEBUFFER_SIZE-1, df) != 0))
             {
                 std::string name = std::string(lineBuffer);
                 chomp(name);
                 if(name.length() >1)
                 {
                     filesInDir.append(name);
                     ManagedModelContainer *mc;
                     if(!isAlreadyLoaded(name))
                     {
                         std::string fname = iBasePath;
                         fname.append(name);
                         mc = new ManagedModelContainer();
                         result = mc->readFile(fname.c_str());
                         if(result)
                         {
                             addModelContainer(name, mc);
                             newModelLoaded = true;
                         }
                     }
                     else
                     {
                         mc = getModelContainer(name);
                     }
                     mc->incRefCount();
                 }
             }
             if(result && newModelLoaded)
             {
                 iTree->balance();
             }
             if(result && ferror(df) != 0)
             {
                 result = false;
             }
             fclose(df);
             if(result)
             {
                 filesInDir.incRefCount();
                 addDirFile(pDirFileName, filesInDir);
                 setLoadedMapTile(pMapTileIdent);
             }
         }
     }
     else
     {
         // Already loaded, so just inc. the ref count if mapTileIdent is new
         if(!containsLoadedMapTile(pMapTileIdent))
         {
             setLoadedMapTile(pMapTileIdent);
             FilesInDir& filesInDir = getDirFiles(pDirFileName);
             filesInDir.incRefCount();
         }
     }
     return (result);
 }