diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2022-09-26 23:23:52 +0300 | 
|---|---|---|
| committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2022-09-26 23:23:52 +0300 | 
| commit | 30b6d29b042f6f9a5054d80cad26960b83d8472b (patch) | |
| tree | 387e758a0871d2b8dbba97e12e50e8aa8857b51e /indra/newview | |
| parent | 20f44fb522099e8e14e42ea0d5dedf76b24b9d6c (diff) | |
SL-17640 Material editor permissions support
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llmaterialeditor.cpp | 43 | ||||
| -rw-r--r-- | indra/newview/llmaterialeditor.h | 5 | 
2 files changed, 42 insertions, 6 deletions
| diff --git a/indra/newview/llmaterialeditor.cpp b/indra/newview/llmaterialeditor.cpp index 12d21cf284..a0ab771c7b 100644 --- a/indra/newview/llmaterialeditor.cpp +++ b/indra/newview/llmaterialeditor.cpp @@ -149,6 +149,8 @@ BOOL LLMaterialEditor::postBuild()      childSetVisible("unsaved_changes", mHasUnsavedChanges); +    getChild<LLUICtrl>("total_upload_fee")->setTextArg("[FEE]", llformat("%d", 0)); +      // Todo:      // Disable/enable setCanApplyImmediately() based on      // working from inventory, upload or editing inworld @@ -391,16 +393,43 @@ void LLMaterialEditor::setHasUnsavedChanges(bool value)      getChild<LLUICtrl>("total_upload_fee")->setTextArg("[FEE]", llformat("%d", mExpectedUploadCost));  } -void LLMaterialEditor::setCanSaveAs(BOOL value) +void LLMaterialEditor::setCanSaveAs(bool value)  {      childSetEnabled("save_as", value);  } -void LLMaterialEditor::setCanSave(BOOL value) +void LLMaterialEditor::setCanSave(bool value)  {      childSetEnabled("save", value);  } +void LLMaterialEditor::setEnableEditing(bool can_modify) +{ +    childSetEnabled("double sided", can_modify); + +    // BaseColor +    childSetEnabled("base color", can_modify); +    childSetEnabled("transparency", can_modify); +    childSetEnabled("alpha mode", can_modify); +    childSetEnabled("alpha cutoff", can_modify); + +    // Metallic-Roughness +    childSetEnabled("metalness factor", can_modify); +    childSetEnabled("roughness factor", can_modify); + +    // Metallic-Roughness +    childSetEnabled("metalness factor", can_modify); +    childSetEnabled("roughness factor", can_modify); + +    // Emissive +    childSetEnabled("emissive color", can_modify); + +    mBaseColorTextureCtrl->setEnabled(can_modify); +    mMetallicTextureCtrl->setEnabled(can_modify); +    mEmissiveTextureCtrl->setEnabled(can_modify); +    mNormalTextureCtrl->setEnabled(can_modify); +} +  void LLMaterialEditor::onCommitBaseColorTexture(LLUICtrl * ctrl, const LLSD & data)  {      // might be better to use arrays, to have a single callback @@ -1624,6 +1653,7 @@ void LLMaterialEditor::loadAsset()                  mAssetStatus = PREVIEW_ASSET_LOADED;                  loadDefaults();                  setHasUnsavedChanges(false); +                setEnableEditing(allow_modify && !source_library);              }              else              { @@ -1644,6 +1674,7 @@ void LLMaterialEditor::loadAsset()                          mAssetID.setNull();                          mAssetStatus = PREVIEW_ASSET_LOADED;                          setHasUnsavedChanges(false); +                        setEnableEditing(allow_modify && !source_library);                          return;                      }                      user_data->with("taskid", mObjectUUID).with("itemid", mItemUUID); @@ -1653,6 +1684,8 @@ void LLMaterialEditor::loadAsset()                      user_data = new LLSD(mItemUUID);                  } +                setEnableEditing(false); // wait for it to load +                  gAssetStorage->getInvItemAsset(source_sim,                      gAgent.getID(),                      gAgent.getSessionID(), @@ -1724,8 +1757,9 @@ void LLMaterialEditor::onLoadComplete(const LLUUID& asset_uuid,              editor->decodeAsset(buffer); -            BOOL modifiable = editor->canModify(editor->mObjectID, editor->getItem()); -            editor->setEnabled(modifiable); +            BOOL allow_modify = editor->canModify(editor->mObjectID, editor->getItem()); +            BOOL source_library = editor->mObjectID.isNull() && gInventory.isObjectDescendentOf(editor->mItemUUID, gInventory.getLibraryRootFolderID()); +            editor->setEnableEditing(allow_modify && !source_library);              editor->setHasUnsavedChanges(false);              editor->mAssetStatus = PREVIEW_ASSET_LOADED;          } @@ -1744,6 +1778,7 @@ void LLMaterialEditor::onLoadComplete(const LLUUID& asset_uuid,              {                  LLNotificationsUtil::add("UnableToLoadMaterial");              } +            editor->setEnableEditing(false);              LL_WARNS() << "Problem loading material: " << status << LL_ENDL;              editor->mAssetStatus = PREVIEW_ASSET_ERROR; diff --git a/indra/newview/llmaterialeditor.h b/indra/newview/llmaterialeditor.h index 0d741614b8..8a67c3c348 100644 --- a/indra/newview/llmaterialeditor.h +++ b/indra/newview/llmaterialeditor.h @@ -153,8 +153,9 @@ public:      void setDoubleSided(bool double_sided);      void setHasUnsavedChanges(bool value); -    void setCanSaveAs(BOOL value); -    void setCanSave(BOOL value); +    void setCanSaveAs(bool value); +    void setCanSave(bool value); +    void setEnableEditing(bool can_modify);      void onCommitBaseColorTexture(LLUICtrl* ctrl, const LLSD& data);      void onCommitMetallicTexture(LLUICtrl* ctrl, const LLSD& data); | 
