diff options
author | Dave Parks <davep@lindenlab.com> | 2022-10-20 13:55:42 -0500 |
---|---|---|
committer | Dave Parks <davep@lindenlab.com> | 2022-10-20 13:55:42 -0500 |
commit | 40695bbd316ceb15db2c3eb203cbe35188a00aa9 (patch) | |
tree | d3a78dd1f42d0cc66bedc5061d9da726ec95577a | |
parent | 8741c05cc10d3f39f272bb4739e7313309539d07 (diff) |
SL-18105 Fix for overrides not showing until a forced mesh update.
-rw-r--r-- | indra/newview/llgltfmateriallist.cpp | 6 | ||||
-rw-r--r-- | indra/newview/llviewerobject.cpp | 1 | ||||
-rw-r--r-- | indra/newview/llviewerobject.h | 2 | ||||
-rw-r--r-- | indra/newview/llvovolume.cpp | 19 | ||||
-rw-r--r-- | indra/newview/llvovolume.h | 1 |
5 files changed, 22 insertions, 7 deletions
diff --git a/indra/newview/llgltfmateriallist.cpp b/indra/newview/llgltfmateriallist.cpp index 86f4faa9d0..0a104d1db5 100644 --- a/indra/newview/llgltfmateriallist.cpp +++ b/indra/newview/llgltfmateriallist.cpp @@ -36,7 +36,6 @@ #include "llviewercontrol.h" #include "llviewergenericmessage.h" #include "llviewerobjectlist.h" -#include "pipeline.h" #include "tinygltf/tiny_gltf.h" #include <strstream> @@ -87,10 +86,7 @@ namespace if(obj) { - if (obj->setTEGLTFMaterialOverride(side, override_data)) - { - gPipeline.markTextured(obj->mDrawable); - } + obj->setTEGLTFMaterialOverride(side, override_data); } LL_DEBUGS() << "successfully parsed override: " << override_data->asJSON() << LL_ENDL; diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 4923771a31..eaf0287dae 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -5315,7 +5315,6 @@ S32 LLViewerObject::setTEMaterialParams(const U8 te, const LLMaterialPtr pMateri setTENormalMap(te, (pMaterialParams) ? pMaterialParams->getNormalID() : LLUUID::null); setTESpecularMap(te, (pMaterialParams) ? pMaterialParams->getSpecularID() : LLUUID::null); - refreshMaterials(); return retval; } diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index bd70532ab7..31e82545ec 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -356,7 +356,7 @@ public: /*virtual*/ S32 setTEGlow(const U8 te, const F32 glow); /*virtual*/ S32 setTEMaterialID(const U8 te, const LLMaterialID& pMaterialID); /*virtual*/ S32 setTEMaterialParams(const U8 te, const LLMaterialPtr pMaterialParams); - S32 setTEGLTFMaterialOverride(U8 te, LLGLTFMaterial* mat); + virtual S32 setTEGLTFMaterialOverride(U8 te, LLGLTFMaterial* mat); // Used by Materials update functions to properly kick off rebuilds // of VBs etc when materials updates require changes. diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 127abde19e..98919921ff 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -2609,6 +2609,24 @@ S32 LLVOVolume::setTEMaterialParams(const U8 te, const LLMaterialPtr pMaterialPa return TEM_CHANGE_TEXTURE; } +S32 LLVOVolume::setTEGLTFMaterialOverride(U8 te, LLGLTFMaterial* mat) +{ + S32 retval = LLViewerObject::setTEGLTFMaterialOverride(te, mat); + + if (retval == TEM_CHANGE_TEXTURE) + { + if (!mDrawable.isNull()) + { + gPipeline.markTextured(mDrawable); + gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL); + } + mFaceMappingChanged = TRUE; + } + + return retval; +} + + S32 LLVOVolume::setTEScale(const U8 te, const F32 s, const F32 t) { S32 res = LLViewerObject::setTEScale(te, s, t); @@ -2642,6 +2660,7 @@ S32 LLVOVolume::setTEScaleT(const U8 te, const F32 t) return res; } + void LLVOVolume::updateTEData() { /*if (mDrawable.notNull()) diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index 391351c13e..f0c2ce7cce 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -209,6 +209,7 @@ public: static void setTEMaterialParamsCallbackTE(const LLUUID& objectID, const LLMaterialID& pMaterialID, const LLMaterialPtr pMaterialParams, U32 te); /*virtual*/ S32 setTEMaterialParams(const U8 te, const LLMaterialPtr pMaterialParams) override; + S32 setTEGLTFMaterialOverride(U8 te, LLGLTFMaterial* mat) override; /*virtual*/ S32 setTEScale(const U8 te, const F32 s, const F32 t) override; /*virtual*/ S32 setTEScaleS(const U8 te, const F32 s) override; /*virtual*/ S32 setTEScaleT(const U8 te, const F32 t) override; |