diff options
| -rw-r--r-- | indra/newview/llmeshrepository.h | 2 | ||||
| -rw-r--r-- | indra/newview/llmodelpreview.cpp | 26 | 
2 files changed, 27 insertions, 1 deletions
diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index b9430a6165..b850ade0bb 100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -533,7 +533,7 @@ public:      // Inherited from LLCore::HttpHandler      virtual void onCompleted(LLCore::HttpHandle handle, LLCore::HttpResponse * response); -        LLViewerFetchedTexture* FindViewerTexture(const LLImportMaterial& material); +    static LLViewerFetchedTexture* FindViewerTexture(const LLImportMaterial& material);  private:      LLHandle<LLWholeModelFeeObserver> mFeeObserverHandle; diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp index 7ecd7cdff9..b1a48db0ee 100644 --- a/indra/newview/llmodelpreview.cpp +++ b/indra/newview/llmodelpreview.cpp @@ -543,6 +543,32 @@ void LLModelPreview::rebuildUploadData()              }              instance.mTransform = mat;              mUploadData.push_back(instance); + +            // if uploading textures, make sure textures are present +            if (mFMP->childGetValue("upload_textures").asBoolean()) // too early to cheack if still loading +            { +                for (auto& mat_pair : instance.mMaterial) +                { +                    LLImportMaterial& material = mat_pair.second; + +                    if (material.mDiffuseMapFilename.size()) +                    { +                        LLViewerFetchedTexture* texture = LLMeshUploadThread::FindViewerTexture(material); +                        if (texture && texture->isMissingAsset()) +                        { +                            // in case user provided a missing file later +                            texture->setIsMissingAsset(false); +                            texture->setLoadedCallback(LLModelPreview::textureLoadedCallback, 0, true, false, this, NULL, false); +                            texture->forceToSaveRawImage(0, F32_MAX); +                            texture->updateFetch(); +                            if (mModelLoader) +                            { +                                mModelLoader->mNumOfFetchingTextures++; +                            } +                        } +                    } +                } +            }          }      }  | 
