/* * Copyright (c) Contributors to the Open 3D Engine Project * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #pragma once #include #include #include #include #include #include #include namespace ShaderManagementConsole { //! ShaderManagementConsoleWindowComponent is the entry point for the Shader Management Console gem user interface, and is mainly //! used for initialization and registration of other classes, including ShaderManagementConsoleWindow. class ShaderManagementConsoleWindowComponent : public AZ::Component , private ShaderManagementConsoleWindowRequestBus::Handler , private ShaderManagementConsoleRequestBus::Handler , private AzToolsFramework::EditorWindowRequestBus::Handler { public: AZ_COMPONENT(ShaderManagementConsoleWindowComponent, "{03976F19-3C74-49FE-A15F-7D3CADBA616C}"); static void Reflect(AZ::ReflectContext* context); static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required); static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided); static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible); private: // Temporary structure when generating shader variants. struct ShaderVariantListInfo { AZStd::string m_materialFileName; AZStd::vector m_shaderItems; }; ////////////////////////////////////////////////////////////////////////// // AzToolsFramework::EditorWindowRequests::Bus::Handler QWidget* GetAppMainWindow() override; ////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// // ShaderManagementConsoleWindowRequestBus::Handler overrides... void CreateShaderManagementConsoleWindow() override; void DestroyShaderManagementConsoleWindow() override; //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// // ShaderManagementConsoleRequestBus::Handler overrides... AZ::Data::AssetInfo GetSourceAssetInfo(const AZStd::string& sourceAssetFileName) override; AZStd::vector FindMaterialAssetsUsingShader(const AZStd::string& shaderFilePath) override; AZStd::vector GetMaterialInstanceShaderItems(const AZ::Data::AssetId& assetId) override; //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// // AZ::Component interface implementation void Init() override; void Activate() override; void Deactivate() override; //////////////////////////////////////////////////////////////////////// AZStd::unique_ptr m_window; AZStd::unique_ptr m_assetBrowserInteractions; }; }