SL-18233 Double clicking material in an object shows notecard

meow-7.2.2
Andrey Kleshchev 2022-09-28 20:01:06 +03:00
parent a63fcfc9d5
commit 6b46793771
3 changed files with 23 additions and 9 deletions

View File

@ -180,6 +180,16 @@ LLMaterialEditor::LLMaterialEditor(const LLSD& key)
}
}
void LLMaterialEditor::setObjectID(const LLUUID& object_id)
{
LLPreview::setObjectID(object_id);
const LLInventoryItem* item = getItem();
if (item)
{
mAssetID = item->getAssetUUID();
}
}
BOOL LLMaterialEditor::postBuild()
{
mBaseColorTextureCtrl = getChild<LLTextureCtrl>("base_color_texture");
@ -751,7 +761,8 @@ bool LLMaterialEditor::decodeAsset(const std::vector<char>& buffer)
if (loader.LoadASCIIFromString(&model_in, &error_msg, &warn_msg, data.c_str(), data.length(), ""))
{
return setFromGltfModel(model_in, true);
// assets are only supposed to have one item
return setFromGltfModel(model_in, 0, true);
}
else
{
@ -1878,8 +1889,8 @@ void LLMaterialEditor::onLoadComplete(const LLUUID& asset_uuid,
editor->decodeAsset(buffer);
BOOL allow_modify = editor->canModify(editor->mObjectID, editor->getItem());
BOOL source_library = editor->mObjectID.isNull() && gInventory.isObjectDescendentOf(editor->mItemUUID, gInventory.getLibraryRootFolderID());
BOOL allow_modify = editor->canModify(editor->mObjectUUID, editor->getItem());
BOOL source_library = editor->mObjectUUID.isNull() && gInventory.isObjectDescendentOf(editor->mItemUUID, gInventory.getLibraryRootFolderID());
editor->setEnableEditing(allow_modify && !source_library);
editor->setHasUnsavedChanges(false);
editor->mAssetStatus = PREVIEW_ASSET_LOADED;
@ -2083,5 +2094,5 @@ void LLMaterialEditor::loadDefaults()
{
tinygltf::Model model_in;
model_in.materials.resize(1);
setFromGltfModel(model_in, true);
setFromGltfModel(model_in, 0, true);
}

View File

@ -143,6 +143,9 @@ public:
void onClickCancel();
void onCancelMsgCallback(const LLSD& notification, const LLSD& response);
// llpreview
void setObjectID(const LLUUID& object_id) override;
// llpanel
BOOL postBuild() override;
void onClickCloseBtn(bool app_quitting = false) override;
@ -211,7 +214,6 @@ private:
friend class LLMaterialFilePicker;
LLUUID mAssetID;
LLUUID mObjectID;
LLTextureCtrl* mBaseColorTextureCtrl;
LLTextureCtrl* mMetallicTextureCtrl;

View File

@ -50,6 +50,7 @@
#include "llinventoryicon.h"
#include "llinventoryfilter.h"
#include "llinventoryfunctions.h"
#include "llmaterialeditor.h"
#include "llpreviewanim.h"
#include "llpreviewgesture.h"
#include "llpreviewnotecard.h"
@ -1197,17 +1198,17 @@ void LLTaskMaterialBridge::openItem()
LLSD floater_key;
floater_key["taskid"] = mPanel->getTaskUUID();
floater_key["itemid"] = mUUID;
LLPreviewNotecard* preview = LLFloaterReg::showTypedInstance<LLPreviewNotecard>("preview_notecard", floater_key, TAKE_FOCUS_YES);
if (preview)
LLMaterialEditor* mat = LLFloaterReg::showTypedInstance<LLMaterialEditor>("material_editor", floater_key, TAKE_FOCUS_YES);
if (mat)
{
preview->setObjectID(mPanel->getTaskUUID());
mat->setObjectID(mPanel->getTaskUUID());
}
}
}
BOOL LLTaskMaterialBridge::removeItem()
{
LLFloaterReg::hideInstance("preview_notecard", LLSD(mUUID));
LLFloaterReg::hideInstance("material_editor", LLSD(mUUID));
return LLTaskInvFVBridge::removeItem();
}