summaryrefslogtreecommitdiff
path: root/indra/newview/llselectmgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llselectmgr.cpp')
-rw-r--r--indra/newview/llselectmgr.cpp73
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();