diff --git a/Source/Engine/Content/Assets/MaterialBase.cpp b/Source/Engine/Content/Assets/MaterialBase.cpp index 6ef5f9429..1613ef59a 100644 --- a/Source/Engine/Content/Assets/MaterialBase.cpp +++ b/Source/Engine/Content/Assets/MaterialBase.cpp @@ -19,10 +19,10 @@ Variant MaterialBase::GetParameterValue(const StringView& name) if (!IsLoaded() && WaitForLoaded()) return Variant::Null; const auto param = Params.Get(name); + if (IsMaterialInstance() && param && !param->IsOverride() && ((MaterialInstance*)this)->GetBaseMaterial()) + return ((MaterialInstance*)this)->GetBaseMaterial()->GetParameterValue(name); if (param) - { return param->GetValue(); - } LOG(Warning, "Missing material parameter '{0}' in material {1}", String(name), ToString()); return Variant::Null; } diff --git a/Source/Engine/Content/Assets/MaterialBase.h b/Source/Engine/Content/Assets/MaterialBase.h index f0c32d66a..78f244cb7 100644 --- a/Source/Engine/Content/Assets/MaterialBase.h +++ b/Source/Engine/Content/Assets/MaterialBase.h @@ -57,6 +57,8 @@ public: /// /// Gets the material parameter value. /// + /// For material instances that inherit a base material, returned value might come from base material if the current one doesn't override it. + /// The parameter name. /// The parameter value. API_FUNCTION() Variant GetParameterValue(const StringView& name);