/* * 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 namespace AZ { namespace RPI { MaterialFunctorSourceDataRegistration* MaterialFunctorSourceDataRegistration::Get() { return Interface::Get(); } void MaterialFunctorSourceDataRegistration::Init() { Interface::Register(this); } void MaterialFunctorSourceDataRegistration::Shutdown() { m_materialfunctorMap.clear(); m_inverseMap.clear(); Interface::Unregister(this); } void MaterialFunctorSourceDataRegistration::RegisterMaterialFunctor(const AZStd::string& functorName, const Uuid& typeId) { auto iter = m_materialfunctorMap.find(functorName); if (iter != m_materialfunctorMap.end()) { if (iter->second != typeId) { AZ_Error("Material Functor", false, "Material functor name \"%s\" was already registered with a different type Id!", functorName.c_str()); } else { AZ_Warning("Material Functor", false, "Material functor name \"%s\" was already registered!", functorName.c_str()); } return; } m_materialfunctorMap[functorName] = typeId; m_inverseMap[typeId] = functorName; } Uuid MaterialFunctorSourceDataRegistration::FindMaterialFunctorTypeIdByName(const AZStd::string& functorName) { auto iter = m_materialfunctorMap.find(functorName); if (iter == m_materialfunctorMap.end()) { AZ_Warning("Material Functor", false, "Material functor name \"%s\" was NOT registered!", functorName.c_str()); return 0; } return iter->second; } const AZStd::string MaterialFunctorSourceDataRegistration::FindMaterialFunctorNameByTypeId(const Uuid& typeId) { auto iter = m_inverseMap.find(typeId); if (iter == m_inverseMap.end()) { AZ_Warning("Material Functor", false, "Material functor type \"%s\" was NOT registered!", typeId.ToString().c_str()); return AZStd::string(); } return iter->second; } } }