/* * 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 * */ #pragma once #if !defined(Q_MOC_RUN) #include #include #include #include #include #include #include #include #include #include #include #endif namespace AZ { namespace Render { namespace EditorMaterialComponentInspector { using MaterialModelUvOverrideMapChangedCallBack = AZStd::function; class MaterialModelUvNameMapInspector : public AtomToolsFramework::InspectorWidget , public AzToolsFramework::IPropertyEditorNotify { Q_OBJECT public: AZ_CLASS_ALLOCATOR(MaterialModelUvNameMapInspector, AZ::SystemAllocator, 0); explicit MaterialModelUvNameMapInspector( const AZ::Data::AssetId& assetId, const RPI::MaterialModelUvOverrideMap& matModUvOverrides, const AZStd::unordered_set& modelUvNames, MaterialModelUvOverrideMapChangedCallBack matModUvOverrideMapChangedCallBack, QWidget* parent = nullptr ); ~MaterialModelUvNameMapInspector() override; //! AtomToolsFramework::InspectorRequestBus::Handler overrides... void Reset() override; void Populate(); void SetUvNameMap(const RPI::MaterialModelUvOverrideMap& matModUvPairs); private: //! AzToolsFramework::IPropertyEditorNotify overrides... void BeforePropertyModified(AzToolsFramework::InstanceDataNode* pNode) override; void AfterPropertyModified(AzToolsFramework::InstanceDataNode* pNode) override; void SetPropertyEditingActive([[maybe_unused]] AzToolsFramework::InstanceDataNode* pNode) override {} void SetPropertyEditingComplete(AzToolsFramework::InstanceDataNode* pNode) override; void SealUndoStack() override {} void RequestPropertyContextMenu([[maybe_unused]] AzToolsFramework::InstanceDataNode*, const QPoint&) override {} void PropertySelectionChanged([[maybe_unused]] AzToolsFramework::InstanceDataNode*, bool) override {} void ResetModelUvNameIndices(); void SetModelUvNames(const AZStd::unordered_set& modelUvNames); RPI::MaterialModelUvOverrideMap m_matModUvOverrides; AZStd::vector m_modelUvNameIndices; //! Used to index enum values and translate to UV pairs. RPI::MaterialUvNameMap m_materialUvNames; AZStd::vector m_modelUvNames; //! Used as enum values. MaterialModelUvOverrideMapChangedCallBack m_matModUvOverrideMapChangedCallBack; AtomToolsFramework::DynamicPropertyGroup m_group; const AtomToolsFramework::DynamicProperty* m_activeProperty = nullptr; }; bool OpenInspectorDialog( const AZ::Data::AssetId& assetId, const RPI::MaterialModelUvOverrideMap& matModUvOverrides, const AZStd::unordered_set& modelUvNames, MaterialModelUvOverrideMapChangedCallBack matModUvOverrideMapChangedCallBack); } // namespace EditorMaterialComponentInspector } // namespace Render } // namespace AZ