diff --git a/MshViewer/Header/Object.h b/MshViewer/Header/Object.h index 3ef357d..c9182c5 100644 --- a/MshViewer/Header/Object.h +++ b/MshViewer/Header/Object.h @@ -61,7 +61,7 @@ private: void setModlDefault(Modl* model); void loadChunks(std::list &destination, std::streampos start, const std::uint32_t end); void analyseMsh2Chunks(std::list &chunkList); - void analyseMatdChunks(Modl* dataDestination, std::list &chunkList); + void analyseMatdChunks(std::list &chunkList); void analyseModlChunks(Modl* dataDestination, std::list &chunkList); void analyseGeomChunks(Modl* dataDestination, std::list &chunkList); void analyseSegmChunks(Modl* dataDestination, std::list &chunkList); diff --git a/MshViewer/Source/Object.cpp b/MshViewer/Source/Object.cpp index 9aaaf20..4d5a5b4 100644 --- a/MshViewer/Source/Object.cpp +++ b/MshViewer/Source/Object.cpp @@ -133,9 +133,6 @@ void Object::analyseMsh2Chunks(std::list& chunkList) { for (std::list::iterator it = chunkList.begin(); it != chunkList.end(); it++) { - Modl* tempModl = new Modl; - setModlDefault(tempModl); - if (!strcmp("MATL", (*it)->name)) { // get all MATD from MATL list @@ -153,7 +150,7 @@ void Object::analyseMsh2Chunks(std::list& chunkList) loadChunks(tempMatdChunks, (*it)->position, (*it)->size); // analyse MATD subchunks - analyseMatdChunks(tempModl, tempMatdChunks); + analyseMatdChunks(tempMatdChunks); // clean up while (!tempMatdChunks.empty()) @@ -178,6 +175,10 @@ void Object::analyseMsh2Chunks(std::list& chunkList) if (!strcmp("MODL", (*it)->name)) { + + Modl* tempModl = new Modl; + setModlDefault(tempModl); + // get all subchunks std::list tempChunks; loadChunks(tempChunks, (*it)->position, (*it)->size); @@ -193,15 +194,15 @@ void Object::analyseMsh2Chunks(std::list& chunkList) delete tempCursor; } + // save Model data + lModls.push_back(tempModl); + continue; } - - // save Model data - lModls.push_back(tempModl); } } -void Object::analyseMatdChunks(Modl * dataDestination, std::list& chunkList) +void Object::analyseMatdChunks(std::list& chunkList) { for (std::list::iterator it = chunkList.begin(); it != chunkList.end(); it++) {