diff options
Diffstat (limited to 'indra/newview/llselectmgr.cpp')
| -rw-r--r-- | indra/newview/llselectmgr.cpp | 73 |
1 files changed, 30 insertions, 43 deletions
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index ee10872a16..dbc3fe0ce5 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -1814,15 +1814,12 @@ void LLObjectSelection::applyNoCopyPbrMaterialToTEs(LLViewerInventoryItem* item) object->setRenderMaterialID(te, asset_id, false /*will be sent later*/); // blank out any override data on the server - LLCoros::instance().launch("modifyMaterialCoro", - std::bind(&LLGLTFMaterialList::modifyMaterialCoro, - gAgent.getRegionCapability("ModifyMaterialParams"), - llsd::map( - "object_id", object->getID(), - "side", te), nullptr)); + LLGLTFMaterialList::queueApply(object->getID(), te, asset_id); } } } + + LLGLTFMaterialList::flushUpdates(); } @@ -1959,12 +1956,7 @@ void LLSelectMgr::selectionSetGLTFMaterial(const LLUUID& mat_id) objectp->setRenderMaterialID(te, asset_id, false /*prevent an update to prevent a race condition*/); // blank out any override data on the server - LLCoros::instance().launch("modifyMaterialCoro", - std::bind(&LLGLTFMaterialList::modifyMaterialCoro, - gAgent.getRegionCapability("ModifyMaterialParams"), - llsd::map( - "object_id", objectp->getID(), - "side", te), nullptr)); + LLGLTFMaterialList::queueApply(objectp->getID(), te, asset_id); return true; } @@ -2026,6 +2018,8 @@ void LLSelectMgr::selectionSetGLTFMaterial(const LLUUID& mat_id) } } sendfunc(item); getSelection()->applyToObjects(&sendfunc); + + LLGLTFMaterialList::flushUpdates(); } //----------------------------------------------------------------------------- @@ -2225,25 +2219,27 @@ void LLSelectMgr::selectionRevertGLTFMaterials() LLUUID asset_id = nodep->mSavedGLTFMaterialIds[te]; objectp->setRenderMaterialID(te, asset_id, false /*wait for bulk update*/); - // Restore overrides - LLSD overrides; - overrides["object_id"] = objectp->getID(); - overrides["side"] = te; // todo: make sure this does not cause race condition with setRenderMaterialID // when we are reverting from null id to non null plus override - if (te < (S32)nodep->mSavedGLTFRenderMaterials.size() - && nodep->mSavedGLTFRenderMaterials[te].notNull() + if (te < (S32)nodep->mSavedGLTFOverrideMaterials.size() + && nodep->mSavedGLTFOverrideMaterials[te].notNull() && asset_id.notNull()) { - overrides["gltf_json"] = nodep->mSavedGLTFRenderMaterials[te]->asJSON(); - } // else nothing to blank override out - - LLCoros::instance().launch("modifyMaterialCoro", - std::bind(&LLGLTFMaterialList::modifyMaterialCoro, - gAgent.getRegionCapability("ModifyMaterialParams"), - overrides, - nullptr)); + // Restore overrides + LLSD overrides; + overrides["object_id"] = objectp->getID(); + overrides["side"] = te; + + overrides["gltf_json"] = nodep->mSavedGLTFOverrideMaterials[te]->asJSON(); + LLGLTFMaterialList::queueUpdate(overrides); + } + else + { + //blank override out + LLGLTFMaterialList::queueApply(objectp->getID(), te, asset_id); + } + } return true; } @@ -5888,10 +5884,10 @@ void LLSelectMgr::processObjectProperties(LLMessageSystem* msg, void** user_data // reflected in a saved copy. // Like changes from local material (reuses pointer) or // from live editor (revert mechanics might modify this) - LLGLTFMaterial* old_mat = node->getObject()->getTE(i)->getGLTFRenderMaterial(); - if (old_mat) + LLGLTFMaterial* old_override = node->getObject()->getTE(i)->getGLTFMaterialOverride(); + if (old_override) { - LLPointer<LLGLTFMaterial> mat = new LLGLTFMaterial(*old_mat); + LLPointer<LLGLTFMaterial> mat = new LLGLTFMaterial(*old_override); materials.push_back(mat); } else @@ -5903,7 +5899,7 @@ void LLSelectMgr::processObjectProperties(LLMessageSystem* msg, void** user_data // processObjectProperties does not include overrides so this // might need to be moved to LLGLTFMaterialOverrideDispatchHandler - node->saveGLTFRenderMaterials(materials); + node->saveGLTFOverrideMaterials(materials); } } @@ -6657,7 +6653,7 @@ LLSelectNode::LLSelectNode(const LLSelectNode& nodep) saveTextures(nodep.mSavedTextures); saveGLTFMaterialIds(nodep.mSavedGLTFMaterialIds); - saveGLTFRenderMaterials(nodep.mSavedGLTFRenderMaterials); + saveGLTFOverrideMaterials(nodep.mSavedGLTFOverrideMaterials); } LLSelectNode::~LLSelectNode() @@ -6805,29 +6801,20 @@ void LLSelectNode::saveGLTFMaterialIds(const uuid_vec_t& materials) } } -void LLSelectNode::saveGLTFRenderMaterials(const gltf_materials_vec_t& materials) +void LLSelectNode::saveGLTFOverrideMaterials(const gltf_materials_vec_t& materials) { if (mObject.notNull()) { - mSavedGLTFRenderMaterials.clear(); + mSavedGLTFOverrideMaterials.clear(); for (gltf_materials_vec_t::const_iterator mat_it = materials.begin(); mat_it != materials.end(); ++mat_it) { - mSavedGLTFRenderMaterials.push_back(*mat_it); + mSavedGLTFOverrideMaterials.push_back(*mat_it); } } } -LLGLTFMaterial* LLSelectNode::getSavedGLTFRenderMaterial(S32 te) -{ - if (mSavedGLTFRenderMaterials.size() > te) - { - return mSavedGLTFRenderMaterials[te].get(); - } - return nullptr; -} - void LLSelectNode::saveTextureScaleRatios(LLRender::eTexIndex index_to_query) { mTextureScaleRatios.clear(); |
