diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2022-09-29 23:17:49 +0300 | 
|---|---|---|
| committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2022-09-29 23:17:49 +0300 | 
| commit | 332ddc67de2de245a52d9db3be20f4ba8051f166 (patch) | |
| tree | beed474fae2440a071a85f1d8b47f78376e88b04 /indra | |
| parent | 9346b45188462056698083f4f83fe8fecbe19bdf (diff) | |
SL-17653 Small change in material loading order
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/lllocalgltfmaterials.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llmaterialeditor.cpp | 80 | ||||
| -rw-r--r-- | indra/newview/llmaterialeditor.h | 2 | ||||
| -rw-r--r-- | indra/newview/lltexturectrl.cpp | 7 | 
4 files changed, 36 insertions, 55 deletions
| diff --git a/indra/newview/lllocalgltfmaterials.cpp b/indra/newview/lllocalgltfmaterials.cpp index 6e6671d360..02331e9cd7 100644 --- a/indra/newview/lllocalgltfmaterials.cpp +++ b/indra/newview/lllocalgltfmaterials.cpp @@ -267,7 +267,7 @@ bool LLLocalGLTFMaterial::loadMaterial(LLPointer<LLGLTFMaterial> mat, S32 index)              if (!material_in.name.empty())              { -                mShortName = material_in.name; +                mShortName = gDirUtilp->getBaseFileName(filename_lc, true) + " (" + material_in.name + ")";              }              // get base color texture diff --git a/indra/newview/llmaterialeditor.cpp b/indra/newview/llmaterialeditor.cpp index 7270317b8c..a72d38223f 100644 --- a/indra/newview/llmaterialeditor.cpp +++ b/indra/newview/llmaterialeditor.cpp @@ -1152,40 +1152,6 @@ void LLMaterialEditor::onCancelMsgCallback(const LLSD& notification, const LLSD&      }  } -class LLMaterialFilePicker : public LLFilePickerThread -{ -public: -    LLMaterialFilePicker(); -    virtual void notify(const std::vector<std::string>& filenames); -    static void	textureLoadedCallback(BOOL success, LLViewerFetchedTexture* src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata); - -}; - -LLMaterialFilePicker::LLMaterialFilePicker() -    : LLFilePickerThread(LLFilePicker::FFLOAD_MATERIAL) -{ -} - -void LLMaterialFilePicker::notify(const std::vector<std::string>& filenames) -{ -    if (LLAppViewer::instance()->quitRequested()) -    { -        return; -    } - -     -    if (filenames.size() > 0) -    { -        // Todo: there is no point creating LLMaterialEditor before -        // loading material, just creates unnessesary work if decode fails -        LLMaterialEditor* me = (LLMaterialEditor*)LLFloaterReg::getInstance("material_editor"); -        if (me) -        { -            me->loadMaterialFromFile(filenames[0]); -        } -    } -} -  static void pack_textures(      LLPointer<LLImageRaw>& base_color_img,      LLPointer<LLImageRaw>& normal_img, @@ -1233,10 +1199,6 @@ static void pack_textures(      }  } -void LLMaterialFilePicker::textureLoadedCallback(BOOL success, LLViewerFetchedTexture* src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata) -{ -} -  void LLMaterialEditor::loadMaterialFromFile(const std::string& filename, S32 index)  {      tinygltf::TinyGLTF loader; @@ -1266,22 +1228,31 @@ void LLMaterialEditor::loadMaterialFromFile(const std::string& filename, S32 ind          return;      } -    if (model_in.materials.empty() || (index >= model_in.materials.size())) +    if (model_in.materials.empty())      {          // materials are missing          LLNotificationsUtil::add("CannotUploadMaterial");          return;      } +    if (index >= 0 && model_in.materials.size() <= index) +    { +        // material is missing +        LLNotificationsUtil::add("CannotUploadMaterial"); +        return; +    } + +    LLMaterialEditor* me = (LLMaterialEditor*)LLFloaterReg::getInstance("material_editor"); +      if (index >= 0)      {          // Prespecified material -        loadMaterial(model_in, filename_lc, index); +        me->loadMaterial(model_in, filename_lc, index);      }      else if (model_in.materials.size() == 1)      {          // Only one, just load it -        loadMaterial(model_in, filename_lc, 0); +        me->loadMaterial(model_in, filename_lc, 0);      }      else      { @@ -1302,12 +1273,12 @@ void LLMaterialEditor::loadMaterialFromFile(const std::string& filename, S32 ind              }          }          LLFloaterComboOptions::showUI( -            [this, model_in, filename_lc](const std::string& option, S32 index) +            [me, model_in, filename_lc](const std::string& option, S32 index)          { -            loadMaterial(model_in, filename_lc, index); +            me->loadMaterial(model_in, filename_lc, index);          }, -            getString("material_selection_title"), -            getString("material_selection_text"), +            me->getString("material_selection_title"), +            me->getString("material_selection_text"),              material_list              );      } @@ -1315,7 +1286,7 @@ void LLMaterialEditor::loadMaterialFromFile(const std::string& filename, S32 ind  void LLMaterialEditor::loadMaterial(const tinygltf::Model &model_in, const std::string &filename_lc, S32 index)  { -    if (model_in.materials.size() < index) +    if (model_in.materials.size() <= index)      {          return;      } @@ -1410,7 +1381,9 @@ void LLMaterialEditor::loadMaterial(const tinygltf::Model &model_in, const std::      setFromGltfMetaData(filename_lc, model_in, index);      setHasUnsavedChanges(true); +      openFloater(); +    setFocus(TRUE);      applyToSelection();  } @@ -1704,7 +1677,20 @@ void LLMaterialEditor::setFromGltfMetaData(const std::string& filename, const ti  void LLMaterialEditor::importMaterial()  { -    (new LLMaterialFilePicker())->getFile(); +    LLFilePickerReplyThread::startPicker( +        [](const std::vector<std::string>& filenames, LLFilePicker::ELoadFilter load_filter, LLFilePicker::ESaveFilter save_filter) +            { +                if (LLAppViewer::instance()->quitRequested()) +                { +                    return; +                } +                if (filenames.size() > 0) +                { +                    LLMaterialEditor::loadMaterialFromFile(filenames[0], -1); +                } +            }, +        LLFilePicker::FFLOAD_MATERIAL, +        true);  }  class LLRemderMaterialFunctor : public LLSelectedTEFunctor diff --git a/indra/newview/llmaterialeditor.h b/indra/newview/llmaterialeditor.h index 23cfc93763..4e17cee154 100644 --- a/indra/newview/llmaterialeditor.h +++ b/indra/newview/llmaterialeditor.h @@ -103,7 +103,7 @@ public:      void loadAsset() override;      // @index if -1 and file contains more than one material,      // will promt to select specific one -    void loadMaterialFromFile(const std::string& filename, S32 index = -1); +    static void loadMaterialFromFile(const std::string& filename, S32 index = -1);      static void onLoadComplete(const LLUUID& asset_uuid, LLAssetType::EType type, void* user_data, S32 status, LLExtStat ext_status); diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index ff0d74a7c9..5d9eb48e6c 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -970,12 +970,7 @@ void LLFloaterTexturePicker::onBtnUpload(void* userdata)          LLLocalGLTFMaterialMgr::getInstance()->getFilenameAndIndex(tracking_id, filename, index);          if (!filename.empty())          { -            LLMaterialEditor* me = (LLMaterialEditor*)LLFloaterReg::getInstance("material_editor"); -            if (me) -            { -                me->loadMaterialFromFile(filename, index); -                me->setFocus(TRUE); -            } +            LLMaterialEditor::loadMaterialFromFile(filename, index);          }      }      else | 
