/* * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or * its licensors. * * For complete copyright and license terms please see the LICENSE at the root of this * distribution (the "License"). All use of this software is governed by the License, * or, if provided, by the license below or the license accompanying this file. Do not * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * */ #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