diff --git a/indra/llprimitive/lldaeloader.cpp b/indra/llprimitive/lldaeloader.cpp index 104e503377..5737a87e6b 100644 --- a/indra/llprimitive/lldaeloader.cpp +++ b/indra/llprimitive/lldaeloader.cpp @@ -54,6 +54,7 @@ #endif #include +#include #include "lldaeloader.h" #include "llsdserialize.h" @@ -877,9 +878,18 @@ bool LLDAELoader::OpenFile(const std::string& filename) // Set up colladadom error handler FSDaeSetErrorHandler oErrorHandlerSerror; + // Bug fixes in mesh importer by Drake Arconis + //replace illegal # in path as collada's escapser is broke + std::string tmp_file = filename; + boost::replace_all(tmp_file, "#", "%23"); + // + //no suitable slm exists, load from the .dae file DAE dae; - domCOLLADA* dom = dae.open(filename); + // Bug fixes in mesh importer by Drake Arconis + //domCOLLADA* dom = dae.open(filename); + domCOLLADA* dom = dae.open(tmp_file); + // if (!dom) { @@ -907,7 +917,10 @@ bool LLDAELoader::OpenFile(const std::string& filename) daeInt count = db->getElementCount(NULL, COLLADA_TYPE_MESH); - daeDocument* doc = dae.getDoc(mFilename); + // Bug fixes in mesh importer by Drake Arconis + //daeDocument* doc = dae.getDoc(mFilename); + daeDocument* doc = dae.getDoc(tmp_file); + // if (!doc) { LL_WARNS() << "can't find internal doc" << LL_ENDL; @@ -2256,7 +2269,10 @@ std::string LLDAELoader::getElementLabel(daeElement *element) // static size_t LLDAELoader::getSuffixPosition(std::string label) { - if ((label.find("_LOD") != -1) || (label.find("_PHYS") != -1)) + // Bug fixes in mesh importer by Drake Arconis + //if ((label.find("_LOD") != -1) || (label.find("_PHYS") != -1)) + if ((label.find("_LOD") != std::string::npos) || (label.find("_PHYS") != std::string::npos)) + // { return label.rfind('_'); } diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 5afffbbb5f..45d125f901 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -211,7 +211,10 @@ LLViewerFetchedTexture* bindMaterialDiffuseTexture(const LLImportMaterial& mater std::string stripSuffix(std::string name) { - if ((name.find("_LOD") != -1) || (name.find("_PHYS") != -1)) + // Bug fixes in mesh importer by Drake Arconis + //if ((name.find("_LOD") != -1) || (name.find("_PHYS") != -1)) + if ((name.find("_LOD") != std::string::npos) || (name.find("_PHYS") != std::string::npos)) + // { return name.substr(0, name.rfind('_')); } @@ -1510,7 +1513,10 @@ void LLModelPreview::rebuildUploadData() case LLModel::LOD_HIGH: break; } - if (name_to_match.find(toAdd) == -1) + // Bug fixes in mesh importer by Drake Arconis + //if (name_to_match.find(toAdd) == -1) + if (name_to_match.find(toAdd) == std::string::npos) + // { name_to_match += toAdd; } @@ -1540,7 +1546,10 @@ void LLModelPreview::rebuildUploadData() case LLModel::LOD_HIGH: break; } - if (name_to_match.find(toAdd) == -1) + // Bug fixes in mesh importer by Drake Arconis + //if (name_to_match.find(toAdd) == -1) + if (name_to_match.find(toAdd) == std::string::npos) + // { name_to_match += toAdd; }