MaterialCanvasViewportContent.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. #if !defined(Q_MOC_RUN)
  10. #include <AtomToolsFramework/Document/AtomToolsDocumentNotificationBus.h>
  11. #include <AtomToolsFramework/EntityPreviewViewport/EntityPreviewViewportContent.h>
  12. #include <AtomToolsFramework/Graph/GraphDocumentNotificationBus.h>
  13. #endif
  14. namespace MaterialCanvas
  15. {
  16. class MaterialCanvasViewportContent final
  17. : public AtomToolsFramework::EntityPreviewViewportContent
  18. , public AtomToolsFramework::AtomToolsDocumentNotificationBus::Handler
  19. , public AtomToolsFramework::GraphDocumentNotificationBus::Handler
  20. {
  21. public:
  22. MaterialCanvasViewportContent(
  23. const AZ::Crc32& toolId,
  24. AtomToolsFramework::RenderViewportWidget* widget,
  25. AZStd::shared_ptr<AzFramework::EntityContext> entityContext);
  26. ~MaterialCanvasViewportContent();
  27. AZ::EntityId GetObjectEntityId() const override;
  28. AZ::EntityId GetEnvironmentEntityId() const override;
  29. AZ::EntityId GetPostFxEntityId() const override;
  30. AZ::EntityId GetShadowCatcherEntityId() const;
  31. AZ::EntityId GetGridEntityId() const;
  32. private:
  33. // AtomToolsDocumentNotificationBus::Handler overrides...
  34. void OnDocumentClosed(const AZ::Uuid& documentId) override;
  35. void OnDocumentOpened(const AZ::Uuid& documentId) override;
  36. // AtomToolsFramework::GraphDocumentNotificationBus::Handler overrides...
  37. void OnCompileGraphStarted(const AZ::Uuid& documentId) override;
  38. void OnCompileGraphCompleted(const AZ::Uuid& documentId) override;
  39. void OnCompileGraphFailed(const AZ::Uuid& documentId) override;
  40. // EntityPreviewViewportSettingsNotificationBus::Handler overrides...
  41. void OnViewportSettingsChanged() override;
  42. void ApplyMaterial(const AZ::Uuid& documentId);
  43. AZ::Entity* m_environmentEntity = {};
  44. AZ::Entity* m_gridEntity = {};
  45. AZ::Entity* m_objectEntity = {};
  46. AZ::Entity* m_postFxEntity = {};
  47. AZ::Entity* m_shadowCatcherEntity = {};
  48. AZ::Uuid m_lastOpenedDocumentId;
  49. };
  50. } // namespace MaterialCanvas