diff options
author | andreykproductengine <akleshchev@productengine.com> | 2015-04-16 17:58:50 +0300 |
---|---|---|
committer | andreykproductengine <akleshchev@productengine.com> | 2015-04-16 17:58:50 +0300 |
commit | 10e1bb6ea4db3fc84e3834786ab4614d48a7668d (patch) | |
tree | c621b811b1bd5e5b11822fb3017d95402b395c39 | |
parent | 1dd7e76908277f0ad4b24a8e320aa2b9f9321048 (diff) |
MAINT-5114 FIXED [Project-Importer] LOD files following new naming cannot be uploaded on their own.
-rw-r--r-- | indra/llprimitive/lldaeloader.cpp | 73 | ||||
-rw-r--r-- | indra/llprimitive/lldaeloader.h | 3 |
2 files changed, 34 insertions, 42 deletions
diff --git a/indra/llprimitive/lldaeloader.cpp b/indra/llprimitive/lldaeloader.cpp index 62801b8ed4..6c040470b7 100644 --- a/indra/llprimitive/lldaeloader.cpp +++ b/indra/llprimitive/lldaeloader.cpp @@ -69,6 +69,15 @@ std::string colladaVersion[VERSIONTYPE_COUNT+1] = "Unsupported" }; +static const std::string lod_suffix[LLModel::NUM_LODS] = +{ + "_LOD0", + "_LOD1", + "_LOD2", + "", + "_PHYS", +}; + const U32 LIMIT_MATERIALS_OUTPUT = 12; bool get_dom_sources(const domInputLocalOffset_Array& inputs, S32& pos_offset, S32& tc_offset, S32& norm_offset, S32 &idx_stride, @@ -1922,33 +1931,17 @@ void LLDAELoader::processElement( daeElement* element, bool& badElement, DAE* da badElement = true; } - std::string label = getElementLabel(instance_geo); - - llassert(!label.empty()); + std::string label = getLodlessLabel(instance_geo); + + llassert(!label.empty()); - if (model->mSubmodelID) + if (model->mSubmodelID) { - // CHECK FOR _LODX and _PHYS here to ensure we bolt the submodel 'salt' at the right loc - // - std::string labelStart; - std::string markup; - size_t label_offset = getSuffixPosition(label); - if (label_offset != -1) - { - markup = label.substr(label_offset + 1, 4); - label.erase(label.begin() + label_offset, label.end()); - label +=(char)((int)'a' + model->mSubmodelID); - label += "_"; - label += markup; - } - else - { - label +=(char)((int)'a' + model->mSubmodelID); - } - } + label +=(char)((int)'a' + model->mSubmodelID); + } + + model->mLabel = label + lod_suffix[mLod]; - model->mLabel = label; - mScene[transformation].push_back(LLModelInstance(model, label, transformation, materials)); stretch_extents(model, transformation, mExtents[0], mExtents[1], mFirstTransform); i++; @@ -2209,6 +2202,18 @@ size_t LLDAELoader::getSuffixPosition(std::string label) return -1; } +// static +std::string LLDAELoader::getLodlessLabel(daeElement *element) +{ + std::string label = getElementLabel(element); + size_t ext_pos = getSuffixPosition(label); + if (ext_pos != -1) + { + return label.substr(0, ext_pos); + } + return label; +} + LLColor4 LLDAELoader::getDaeColor(daeElement* element) { LLColor4 value; @@ -2298,25 +2303,11 @@ bool LLDAELoader::loadModelsFromDomMesh(domMesh* mesh, std::vector<LLModel*>& mo LLModel* ret = new LLModel(volume_params, 0.f); - std::string model_name = getElementLabel(mesh); - ret->mLabel = model_name; + std::string model_name = getLodlessLabel(mesh); + ret->mLabel = model_name + lod_suffix[mLod]; llassert(!ret->mLabel.empty()); - // extract actual name and suffix for future use in submodels - std::string name_base, name_suffix; - size_t ext_pos = getSuffixPosition(model_name); - - if (ext_pos == -1) - { - name_base = model_name; - } - else - { - name_base = model_name.substr(0, ext_pos); - name_suffix = model_name.substr(ext_pos, model_name.length() - ext_pos); - } - // Like a monkey, ready to be shot into space // ret->ClearFacesAndMaterials(); @@ -2372,7 +2363,7 @@ bool LLDAELoader::loadModelsFromDomMesh(domMesh* mesh, std::vector<LLModel*>& mo { LLModel* next = new LLModel(volume_params, 0.f); next->mSubmodelID = ++submodelID; - next->mLabel = name_base + (char)((int)'a' + next->mSubmodelID) + name_suffix; + next->mLabel = model_name + (char)((int)'a' + next->mSubmodelID) + lod_suffix[mLod]; next->getVolumeFaces() = remainder; next->mNormalizedScale = ret->mNormalizedScale; next->mNormalizedTranslation = ret->mNormalizedTranslation; diff --git a/indra/llprimitive/lldaeloader.h b/indra/llprimitive/lldaeloader.h index e31b023d22..7d91a6063b 100644 --- a/indra/llprimitive/lldaeloader.h +++ b/indra/llprimitive/lldaeloader.h @@ -96,8 +96,9 @@ protected: // bool loadModelsFromDomMesh(domMesh* mesh, std::vector<LLModel*>& models_out, U32 submodel_limit); - static std::string getElementLabel(daeElement *element); + static std::string getElementLabel(daeElement *element); static size_t getSuffixPosition(std::string label); + static std::string getLodlessLabel(daeElement *element); private: U32 mGeneratedModelLimit; // Attempt to limit amount of generated submodels |