summaryrefslogtreecommitdiff
path: root/indra/llprimitive/llgltfmaterial.cpp
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2023-10-27 23:41:13 +0300
committerakleshchev <117672381+akleshchev@users.noreply.github.com>2023-11-06 18:29:42 +0200
commit596a63051ebabfec51e48be02bbec33ab962d915 (patch)
tree97e564e2714d2d819b547c03d15049fbdf7d19d6 /indra/llprimitive/llgltfmaterial.cpp
parentdc63dfc0dd6554f5f45b1d80bd4cb9258eefee95 (diff)
SL-20523 Local textures not updating on PBR Materials #2
Diffstat (limited to 'indra/llprimitive/llgltfmaterial.cpp')
-rw-r--r--indra/llprimitive/llgltfmaterial.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/indra/llprimitive/llgltfmaterial.cpp b/indra/llprimitive/llgltfmaterial.cpp
index f42c11ee21..6afd83904f 100644
--- a/indra/llprimitive/llgltfmaterial.cpp
+++ b/indra/llprimitive/llgltfmaterial.cpp
@@ -89,6 +89,11 @@ LLGLTFMaterial& LLGLTFMaterial::operator=(const LLGLTFMaterial& rhs)
mOverrideDoubleSided = rhs.mOverrideDoubleSided;
mOverrideAlphaMode = rhs.mOverrideAlphaMode;
+ mLocalTextureIds = rhs.mLocalTextureIds;
+ mLocalTextureTrackingIds = rhs.mLocalTextureTrackingIds;
+
+ updateTextureTracking();
+
return *this;
}
@@ -765,3 +770,44 @@ LLUUID LLGLTFMaterial::getHash() const
return hash;
}
+void LLGLTFMaterial::addLocalTextureTracking(const LLUUID& tracking_id, const LLUUID& tex_id)
+{
+ mLocalTextureTrackingIds.insert(tracking_id);
+ mLocalTextureIds.insert(tex_id);
+}
+
+void LLGLTFMaterial::removeLocalTextureTracking(const LLUUID& tracking_id, const LLUUID& tex_id)
+{
+ mLocalTextureTrackingIds.erase(tracking_id);
+ mLocalTextureIds.erase(tex_id);
+}
+
+bool LLGLTFMaterial::replaceLocalTexture(const LLUUID& old_id, const LLUUID& new_id)
+{
+ bool res = false;
+
+ for (int i = 0; i < GLTF_TEXTURE_INFO_COUNT; ++i)
+ {
+ if (mTextureId[i] == old_id)
+ {
+ mTextureId[i] = new_id;
+ res = true;
+ }
+ }
+
+ mLocalTextureIds.erase(old_id);
+ if (res)
+ {
+ mLocalTextureIds.insert(new_id);
+ }
+
+ return res;
+}
+
+void LLGLTFMaterial::updateTextureTracking()
+{
+ if (mLocalTextureTrackingIds.size() > 0)
+ {
+ LL_WARNS() << "copied a material with local textures, but tracking not implemented" << LL_ENDL;
+ }
+}