GeneralNodeFrameComponent.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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 <AzCore/PlatformDef.h>
  10. AZ_PUSH_DISABLE_WARNING(4251 4800 4244, "-Wunknown-warning-option")
  11. #include <QGraphicsWidget>
  12. AZ_POP_DISABLE_WARNING
  13. #include <Components/Nodes/NodeFrameGraphicsWidget.h>
  14. #include <GraphCanvas/Components/Nodes/NodeBus.h>
  15. #include <GraphCanvas/Components/Nodes/NodeLayoutBus.h>
  16. #include <GraphCanvas/Components/Nodes/NodeUIBus.h>
  17. #include <GraphCanvas/Components/VisualBus.h>
  18. #include <GraphCanvas/Styling/StyleHelper.h>
  19. namespace GraphCanvas
  20. {
  21. class GeneralNodeFrameGraphicsWidget;
  22. class GeneralNodeFrameComponent
  23. : public AZ::Component
  24. , public NodeNotificationBus::Handler
  25. {
  26. public:
  27. AZ_COMPONENT(GeneralNodeFrameComponent, "{3AD0423E-F3D5-45F7-8656-C66BCD1EC691}", AZ::Component);
  28. static void Reflect(AZ::ReflectContext*);
  29. GeneralNodeFrameComponent();
  30. ~GeneralNodeFrameComponent() override;
  31. // AZ::Component
  32. static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided)
  33. {
  34. provided.push_back(AZ_CRC("GraphCanvas_NodeVisualService", 0x39c4e7f3));
  35. provided.push_back(AZ_CRC("GraphCanvas_RootVisualService", 0x9ec46d3b));
  36. provided.push_back(AZ_CRC("GraphCanvas_VisualService", 0xfbb2c871));
  37. }
  38. static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible)
  39. {
  40. incompatible.push_back(AZ_CRC("GraphCanvas_NodeVisualService", 0x39c4e7f3));
  41. incompatible.push_back(AZ_CRC("GraphCanvas_RootVisualService", 0x9ec46d3b));
  42. incompatible.push_back(AZ_CRC("GraphCanvas_VisualService", 0xfbb2c871));
  43. }
  44. static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent)
  45. {
  46. (void)dependent;
  47. }
  48. static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required)
  49. {
  50. required.push_back(AZ_CRC("GraphCanvas_NodeService", 0xcc0f32cc));
  51. required.push_back(AZ_CRC("GraphCanvas_StyledGraphicItemService", 0xeae4cdf4));
  52. }
  53. void Init() override;
  54. void Activate() override;
  55. void Deactivate() override;
  56. ////
  57. // NodeNotifications
  58. void OnNodeActivated() override;
  59. void OnNodeWrapped(const AZ::EntityId& wrappingNode) override;
  60. void OnNodeUnwrapped(const AZ::EntityId& wrappingNode) override;
  61. ////
  62. private:
  63. GeneralNodeFrameComponent(const GeneralNodeFrameComponent&) = delete;
  64. const GeneralNodeFrameComponent& operator=(const GeneralNodeFrameComponent&) = delete;
  65. bool m_shouldDeleteFrame;
  66. GeneralNodeFrameGraphicsWidget* m_frameWidget;
  67. };
  68. //! The QGraphicsItem for the generic frame.
  69. class GeneralNodeFrameGraphicsWidget
  70. : public NodeFrameGraphicsWidget
  71. {
  72. public:
  73. AZ_RTTI(GeneralNodeFrameGraphicsWidget, "{15200183-8316-4A7D-985E-5C3257CD2463}", NodeFrameGraphicsWidget);
  74. AZ_CLASS_ALLOCATOR(GeneralNodeFrameGraphicsWidget, AZ::SystemAllocator, 0);
  75. // Do not allow Serialization of Graphics Ui classes
  76. static void Reflect(AZ::ReflectContext*) = delete;
  77. explicit GeneralNodeFrameGraphicsWidget(const AZ::EntityId& nodeVisual);
  78. ~GeneralNodeFrameGraphicsWidget() override = default;
  79. // SceneMemberUIRequestBus
  80. QPainterPath GetOutline() const override;
  81. ////
  82. // QGraphicsWidget
  83. void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override;
  84. ////
  85. };
  86. }