3
0

MaterialCanvasApplication.h 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <Atom/RHI/FactoryManagerBus.h>
  10. #include <AtomToolsFramework/Document/AtomToolsDocumentApplication.h>
  11. #include <AtomToolsFramework/EntityPreviewViewport/EntityPreviewViewportSettingsSystem.h>
  12. #include <AtomToolsFramework/Graph/AssetStatusReporterSystem.h>
  13. #include <AtomToolsFramework/Graph/DynamicNode/DynamicNodeManager.h>
  14. #include <AtomToolsFramework/Graph/GraphTemplateFileDataCache.h>
  15. #include <AzToolsFramework/API/EditorWindowRequestBus.h>
  16. #include <GraphModel/Model/GraphContext.h>
  17. #include <Window/MaterialCanvasMainWindow.h>
  18. namespace MaterialCanvas
  19. {
  20. //! The main application class for Material Canvas, setting up top level systems, document types, and the main window.
  21. class MaterialCanvasApplication
  22. : public AtomToolsFramework::AtomToolsDocumentApplication
  23. , private AzToolsFramework::EditorWindowRequestBus::Handler
  24. , private AZ::RHI::FactoryManagerNotificationBus::Handler
  25. , private AtomToolsFramework::AtomToolsDocumentNotificationBus::Handler
  26. {
  27. public:
  28. AZ_CLASS_ALLOCATOR(MaterialCanvasApplication, AZ::SystemAllocator)
  29. AZ_TYPE_INFO(MaterialCanvas::MaterialCanvasApplication, "{30F90CA5-1253-49B5-8143-19CEE37E22BB}");
  30. using Base = AtomToolsFramework::AtomToolsDocumentApplication;
  31. MaterialCanvasApplication(int* argc, char*** argv);
  32. ~MaterialCanvasApplication();
  33. // AzFramework::Application overrides...
  34. void Reflect(AZ::ReflectContext* context) override;
  35. const char* GetCurrentConfigurationName() const override;
  36. void StartCommon(AZ::Entity* systemEntity) override;
  37. void Destroy() override;
  38. private:
  39. // AtomToolsFramework::AtomToolsApplication overrides...
  40. AZStd::vector<AZStd::string> GetCriticalAssetFilters() const override;
  41. // AzToolsFramework::EditorWindowRequests::Bus::Handler
  42. QWidget* GetAppMainWindow() override;
  43. // AZ::RHI::FactoryManagerNotificationBus::Handler overrides...
  44. void FactoryRegistered() override;
  45. void InitDynamicNodeManager();
  46. void InitDynamicNodeEditData();
  47. void InitSharedGraphContext();
  48. void InitGraphViewSettings();
  49. void InitMaterialGraphDocumentType();
  50. void InitMaterialGraphNodeDocumentType();
  51. void InitShaderSourceDataDocumentType();
  52. void InitMainWindow();
  53. void InitDefaultDocument();
  54. void ApplyShaderBuildSettings();
  55. AZStd::unique_ptr<MaterialCanvasMainWindow> m_window;
  56. AZStd::unique_ptr<AtomToolsFramework::EntityPreviewViewportSettingsSystem> m_viewportSettingsSystem;
  57. AZStd::unique_ptr<AtomToolsFramework::DynamicNodeManager> m_dynamicNodeManager;
  58. AZStd::unique_ptr<AtomToolsFramework::AssetStatusReporterSystem> m_assetStatusReporterSystem;
  59. AZStd::shared_ptr<GraphModel::GraphContext> m_graphContext;
  60. AZStd::shared_ptr<AtomToolsFramework::GraphTemplateFileDataCache> m_graphTemplateFileDataCache;
  61. AtomToolsFramework::GraphViewSettingsPtr m_graphViewSettingsPtr;
  62. };
  63. } // namespace MaterialCanvas