PassCanvasApplication.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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 <AtomToolsFramework/Document/AtomToolsDocumentApplication.h>
  10. #include <AtomToolsFramework/EntityPreviewViewport/EntityPreviewViewportSettingsSystem.h>
  11. #include <AtomToolsFramework/Graph/DynamicNode/DynamicNodeManager.h>
  12. #include <AzToolsFramework/API/EditorWindowRequestBus.h>
  13. #include <GraphModel/Model/GraphContext.h>
  14. #include <Window/PassCanvasMainWindow.h>
  15. namespace PassCanvas
  16. {
  17. //! The main application class for Pass Canvas, setting up top level systems, document types, and the main window.
  18. class PassCanvasApplication
  19. : public AtomToolsFramework::AtomToolsDocumentApplication
  20. , private AzToolsFramework::EditorWindowRequestBus::Handler
  21. , private AtomToolsFramework::AtomToolsDocumentNotificationBus::Handler
  22. {
  23. public:
  24. AZ_CLASS_ALLOCATOR(PassCanvasApplication, AZ::SystemAllocator)
  25. AZ_TYPE_INFO(PassCanvas::PassCanvasApplication, "{792D3C47-F380-44BC-B47D-621D8C526360}");
  26. using Base = AtomToolsFramework::AtomToolsDocumentApplication;
  27. PassCanvasApplication(int* argc, char*** argv);
  28. ~PassCanvasApplication();
  29. // AzFramework::Application overrides...
  30. void Reflect(AZ::ReflectContext* context) override;
  31. const char* GetCurrentConfigurationName() const override;
  32. void StartCommon(AZ::Entity* systemEntity) override;
  33. void Destroy() override;
  34. private:
  35. // AtomToolsFramework::AtomToolsApplication overrides...
  36. AZStd::vector<AZStd::string> GetCriticalAssetFilters() const override;
  37. // AzToolsFramework::EditorWindowRequests::Bus::Handler
  38. QWidget* GetAppMainWindow() override;
  39. void InitDynamicNodeManager();
  40. void InitDynamicNodeEditData();
  41. void InitSharedGraphContext();
  42. void InitGraphViewSettings();
  43. void InitPassGraphDocumentType();
  44. void InitMainWindow();
  45. void InitDefaultDocument();
  46. AZStd::unique_ptr<PassCanvasMainWindow> m_window;
  47. AZStd::unique_ptr<AtomToolsFramework::EntityPreviewViewportSettingsSystem> m_viewportSettingsSystem;
  48. AZStd::unique_ptr<AtomToolsFramework::DynamicNodeManager> m_dynamicNodeManager;
  49. AZStd::shared_ptr<GraphModel::GraphContext> m_graphContext;
  50. AtomToolsFramework::GraphViewSettingsPtr m_graphViewSettingsPtr;
  51. };
  52. } // namespace PassCanvas