/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #include #include #include #include namespace AZ { namespace RPI { void MaterialNameContext::Reflect(ReflectContext* context) { if (auto* serializeContext = azrtti_cast(context)) { serializeContext->Class() ->Version(1) ->Field("propertyIdContext", &MaterialNameContext::m_propertyIdContext) ->Field("srgInputNameContext", &MaterialNameContext::m_srgInputNameContext) ->Field("shaderOptionNameContext", &MaterialNameContext::m_shaderOptionNameContext) ; } } bool MaterialNameContext::IsDefault() const { return m_propertyIdContext.empty() && m_srgInputNameContext.empty() && m_shaderOptionNameContext.empty(); } void MaterialNameContext::ExtendPropertyIdContext(AZStd::string_view nameContext, bool insertDelimiter) { m_propertyIdContext += nameContext; if (insertDelimiter && !nameContext.empty() && !nameContext.ends_with(".")) { m_propertyIdContext += "."; } } void MaterialNameContext::ExtendSrgInputContext(AZStd::string_view nameContext) { m_srgInputNameContext += nameContext; } void MaterialNameContext::ExtendShaderOptionContext(AZStd::string_view nameContext) { m_shaderOptionNameContext += nameContext; } bool MaterialNameContext::ContextualizeProperty(Name& propertyName) const { if (m_propertyIdContext.empty()) { return false; } propertyName = m_propertyIdContext + propertyName.GetCStr(); return true; } bool MaterialNameContext::ContextualizeSrgInput(Name& srgInputName) const { if (m_srgInputNameContext.empty()) { return false; } srgInputName = m_srgInputNameContext + srgInputName.GetCStr(); return true; } bool MaterialNameContext::ContextualizeShaderOption(Name& shaderOptionName) const { if (m_shaderOptionNameContext.empty()) { return false; } shaderOptionName = m_shaderOptionNameContext + shaderOptionName.GetCStr(); return true; } bool MaterialNameContext::ContextualizeProperty(AZStd::string& propertyName) const { if (m_propertyIdContext.empty()) { return false; } propertyName = m_propertyIdContext + propertyName; return true; } bool MaterialNameContext::ContextualizeSrgInput(AZStd::string& srgInputName) const { if (m_srgInputNameContext.empty()) { return false; } srgInputName = m_srgInputNameContext + srgInputName; return true; } bool MaterialNameContext::ContextualizeShaderOption(AZStd::string& shaderOptionName) const { if (m_shaderOptionNameContext.empty()) { return false; } shaderOptionName = m_shaderOptionNameContext + shaderOptionName; return true; } bool MaterialNameContext::HasContextForProperties() const { return !m_propertyIdContext.empty(); } bool MaterialNameContext::HasContextForSrgInputs() const { return !m_srgInputNameContext.empty(); } bool MaterialNameContext::HasContextForShaderOptions() const { return !m_shaderOptionNameContext.empty(); } } // namespace RPI } // namespace AZ