From cba87c62cc3c31d48c680bf92aa7ae2b9555ba69 Mon Sep 17 00:00:00 2001 From: Cosmic Linden Date: Tue, 8 Nov 2022 10:53:24 -0800 Subject: SL-18523: When editing an object's material override, use the object's material override as a base, rather than its render material --- indra/llprimitive/llgltfmaterial.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'indra/llprimitive/llgltfmaterial.cpp') diff --git a/indra/llprimitive/llgltfmaterial.cpp b/indra/llprimitive/llgltfmaterial.cpp index 6d23cb8039..ee1931a27b 100644 --- a/indra/llprimitive/llgltfmaterial.cpp +++ b/indra/llprimitive/llgltfmaterial.cpp @@ -61,6 +61,29 @@ LLMatrix3 LLGLTFMaterial::TextureTransform::asMatrix() return offset * rotation * scale; } +LLGLTFMaterial::LLGLTFMaterial(bool for_override) +: LLGLTFMaterial() +{ + if (for_override) + { + setBaseColorId(mBaseColorId, for_override); + setNormalId(mNormalId, for_override); + setMetallicRoughnessId(mMetallicRoughnessId, for_override); + setEmissiveId(mEmissiveId, for_override); + + setBaseColorFactor(mBaseColor, for_override); + setAlphaCutoff(mAlphaCutoff, for_override); + setEmissiveColorFactor(mEmissiveColor, for_override); + setMetallicFactor(mMetallicFactor, for_override); + setRoughnessFactor(mRoughnessFactor, for_override); + setAlphaMode(mAlphaMode, for_override); + setDoubleSided(mDoubleSided, for_override); + + // *NOTE: Texture offsets only exist in overrides, so there is no need + // to hack in the override value here. + } +} + LLGLTFMaterial::LLGLTFMaterial(const LLGLTFMaterial& rhs) { *this = rhs; @@ -588,6 +611,9 @@ void LLGLTFMaterial::applyOverrideUUID(LLUUID& dst_id, const LLUUID& override_id } } +// Make a static default material override for editing materials +const LLGLTFMaterial LLGLTFMaterial::sOverrideDefault{true}; + void LLGLTFMaterial::applyOverride(const LLGLTFMaterial& override_mat) { LL_PROFILE_ZONE_SCOPED; -- cgit v1.3