123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- /*
- * Copyright (c) Contributors to the Open 3D Engine Project.
- * For complete copyright and license terms please see the LICENSE at the root of this distribution.
- *
- * SPDX-License-Identifier: Apache-2.0 OR MIT
- *
- */
- #pragma once
- // AZ ...
- #include <AzCore/Component/EntityId.h>
- #include <AzCore/EBus/EBus.h>
- // Graph Canvas ...
- #include <GraphCanvas/Components/Nodes/NodeBus.h>
- #include <GraphCanvas/Components/Slots/SlotBus.h>
- #include <GraphCanvas/Components/Slots/Data/DataSlotBus.h>
- #include <GraphCanvas/Components/Slots/Extender/ExtenderSlotBus.h>
- #include <GraphCanvas/Editor/EditorTypes.h>
- #include <GraphCanvas/GraphCanvasBus.h>
- namespace AZ
- {
- class ReflectContext;
- }
- namespace MockGraphCanvasServices
- {
- //! This mocks the GraphCanvas::SlotComponent component.
- //! This component is added to a SlotEntity that is created when a Slot is added to a Node.
- class MockSlotComponent
- : public AZ::Component
- {
- public:
- AZ_COMPONENT(MockSlotComponent, "{030690A4-6D16-4770-89B8-20A2EDF48D87}");
- static void Reflect(AZ::ReflectContext* context);
- static AZ::Entity* CreateCoreSlotEntity();
- MockSlotComponent() = default;
- explicit MockSlotComponent(const GraphCanvas::SlotType& slotType);
- MockSlotComponent(const GraphCanvas::SlotType& slotType, const GraphCanvas::SlotConfiguration& configuration);
- ~MockSlotComponent() override = default;
- // Component overrides ...
- void Activate() override;
- void Deactivate() override;
- protected:
- GraphCanvas::SlotType m_slotType;
- GraphCanvas::SlotConfiguration m_slotConfiguration;
- };
- //! This mocks the GraphCanvas::DataSlotComponent component.
- //! This component is the specific instance of a SlotComponent that is
- //! added to a SlotEntity when a DataSlot is added to a Node.
- //! Implements the GraphCanvas::DataSlotRequestBus for tests which involve data slots.
- class MockDataSlotComponent
- : public MockSlotComponent
- , public GraphCanvas::DataSlotRequestBus::Handler
- {
- public:
- AZ_COMPONENT(MockDataSlotComponent, "{0E2E8F38-3B7B-427D-ABD6-38C68FDEFE88}", MockSlotComponent);
- static void Reflect(AZ::ReflectContext* context);
- static AZ::Entity* CreateDataSlot(const GraphCanvas::DataSlotConfiguration& dataSlotConfiguration);
- MockDataSlotComponent();
- MockDataSlotComponent(const GraphCanvas::DataSlotConfiguration& dataSlotConfiguration);
- ~MockDataSlotComponent() = default;
- // Component overrides ...
- void Activate() override;
- void Deactivate() override;
- // GraphCanvas::DataSlotRequestBus overrides ...
- bool ConvertToReference(bool isNewSlot = false) override;
- bool CanConvertToReference(bool isNewSlot = false) const override;
- bool ConvertToValue() override;
- bool CanConvertToValue() const override;
- bool IsUserSlot() const override;
- GraphCanvas::DataSlotType GetDataSlotType() const override;
- GraphCanvas::DataValueType GetDataValueType() const override;
- AZ::Uuid GetDataTypeId() const override;
- void SetDataTypeId(AZ::Uuid typeId) override;
- const GraphCanvas::Styling::StyleHelper* GetDataColorPalette() const override;
- size_t GetContainedTypesCount() const override;
- AZ::Uuid GetContainedTypeId(size_t index) const override;
- const GraphCanvas::Styling::StyleHelper* GetContainedTypeColorPalette(size_t index) const override;
- void SetDataAndContainedTypeIds(AZ::Uuid typeId, const AZStd::vector<AZ::Uuid>& typeIds, GraphCanvas::DataValueType valueType) override;
- private:
- MockDataSlotComponent(const MockDataSlotComponent&) = delete;
- MockDataSlotComponent& operator=(const MockDataSlotComponent&) = delete;
- GraphCanvas::DataSlotConfiguration m_dataSlotConfiguration;
- };
- //! This mocks the GraphCanvas::ExecutionSlotComponent component.
- //! This component is the specific instance of a SlotComponent that is
- //! added to a SlotEntity when an ExecutionSlot is added to a Node.
- class MockExecutionSlotComponent
- : public MockSlotComponent
- {
- public:
- AZ_COMPONENT(MockExecutionSlotComponent, "{3E12451C-65EB-45A6-AC98-437F06021359}", MockSlotComponent);
- static void Reflect(AZ::ReflectContext* reflectContext);
- static AZ::Entity* CreateExecutionSlot(const AZ::EntityId& nodeId, const GraphCanvas::SlotConfiguration& slotConfiguration);
- MockExecutionSlotComponent();
- explicit MockExecutionSlotComponent(const GraphCanvas::SlotConfiguration& slotConfiguration);
- ~MockExecutionSlotComponent() = default;
- protected:
- MockExecutionSlotComponent(const MockExecutionSlotComponent&) = delete;
- MockExecutionSlotComponent& operator=(const MockExecutionSlotComponent&) = delete;
- GraphCanvas::SlotConfiguration m_executionSlotConfiguration;
- };
- //! This mocks the GraphCanvas::ExtenderSlotComponent component.
- //! This component is the specific instance of a SlotComponent that is
- //! added to a SlotEntity when an ExtenderSlot is added to a Node.
- //! Implements the GraphCanvas::ExtenderSlotRequestBus for tests which involve extender slots.
- class MockExtenderSlotComponent
- : public MockSlotComponent
- , public GraphCanvas::ExtenderSlotRequestBus::Handler
- {
- public:
- AZ_COMPONENT(MockExtenderSlotComponent, "{0CAE942E-5E4E-42EC-8F63-809A4DE317C0}", MockSlotComponent);
- static void Reflect(AZ::ReflectContext* reflectContext);
- static AZ::Entity* CreateExtenderSlot(const AZ::EntityId& nodeId, const GraphCanvas::ExtenderSlotConfiguration& slotConfiguration);
- MockExtenderSlotComponent();
- explicit MockExtenderSlotComponent(const GraphCanvas::ExtenderSlotConfiguration& slotConfiguration);
- ~MockExtenderSlotComponent() = default;
- // Component overrides ...
- void Activate() override;
- void Deactivate() override;
- ////
- // ExtenderSlotComponent overrides ...
- void TriggerExtension() override;
- GraphCanvas::Endpoint ExtendForConnectionProposal(const GraphCanvas::ConnectionId& connectionId, const GraphCanvas::Endpoint& endpoint) override;
- protected:
- MockExtenderSlotComponent(const MockExtenderSlotComponent&) = delete;
- MockExtenderSlotComponent& operator=(const MockExtenderSlotComponent&) = delete;
- GraphCanvas::ExtenderSlotConfiguration m_extenderSlotConfiguration;
- };
- //! This mocks the GraphCanvas::NodeComponent component.
- //! This component is added to a Node entity when a Node is added to the graph.
- //! Implements the GraphCanvas::NodeRequestBus for tests that invole nodes.
- class MockNodeComponent
- : public AZ::Component
- , public GraphCanvas::NodeRequestBus::Handler
- {
- public:
- AZ_COMPONENT(MockNodeComponent, "{886E7216-FD58-442B-AF1E-1AC7174885F8}", AZ::Component);
- static void Reflect(AZ::ReflectContext* context);
- static AZ::Entity* CreateCoreNodeEntity(const GraphCanvas::NodeConfiguration& config = GraphCanvas::NodeConfiguration());
- MockNodeComponent() = default;
- MockNodeComponent(const GraphCanvas::NodeConfiguration& config);
- ~MockNodeComponent() override = default;
- // Component overrides ...
- void Activate() override;
- void Deactivate() override;
- // GraphCanvas::NodeRequestBus overrides ...
- void SetTooltip(const AZStd::string& tooltip) override;
- const AZStd::string GetTooltip() const override;
- void SetShowInOutliner(bool showInOutliner) override;
- bool ShowInOutliner() const override;
- void AddSlot(const AZ::EntityId& slotId) override;
- void RemoveSlot(const AZ::EntityId& slotId) override;
- AZStd::vector<AZ::EntityId> GetSlotIds() const override;
- AZStd::vector<GraphCanvas::SlotId> GetVisibleSlotIds() const override;
- AZStd::vector<GraphCanvas::SlotId> FindVisibleSlotIdsByType(const GraphCanvas::ConnectionType& connectionType, const GraphCanvas::SlotType& slotType) const override;
- bool HasConnections() const override;
- AZStd::any* GetUserData() override;
- bool IsWrapped() const override;
- void SetWrappingNode(const AZ::EntityId& wrappingNode) override;
- AZ::EntityId GetWrappingNode() const override;
- void SignalBatchedConnectionManipulationBegin() override;
- void SignalBatchedConnectionManipulationEnd() override;
- GraphCanvas::RootGraphicsItemEnabledState UpdateEnabledState() override;
- bool IsHidingUnusedSlots() const override;
- void ShowAllSlots() override;
- void HideUnusedSlots() override;
- bool HasHideableSlots() const override;
- void SignalConnectionMoveBegin(const GraphCanvas::ConnectionId& connectionId) override;
- void SignalNodeAboutToBeDeleted() override;
- protected:
- /// This node's slots
- AZStd::vector<AZ::EntityId> m_slotIds;
- /// Serialized configuration settings
- GraphCanvas::NodeConfiguration m_configuration;
- /// Stores custom user data for this node
- AZStd::any m_userData;
- };
- //! This mocks the GraphCanvas::GraphCanvasSystemComponent component.
- //! This component is created and added to the system entity created in our GraphModelIntegrationTest::TestEnvironment
- //! because this component implements the GraphCanvas::GraphCanvasRequestBus that is
- //! the entry point bus for performing basic GraphCanvas operations such as creating
- //! a new scene, creating nodes, creating slots, etc...
- class MockGraphCanvasSystemComponent
- : public AZ::Component
- , private GraphCanvas::GraphCanvasRequestBus::Handler
- {
- public:
- AZ_COMPONENT(MockGraphCanvasSystemComponent, "{03D5474F-5FF3-4D7B-B578-2C3EC132E921}");
- static void Reflect(AZ::ReflectContext* context);
- MockGraphCanvasSystemComponent() = default;
- ~MockGraphCanvasSystemComponent() override = default;
- private:
- // Component overrides ...
- void Activate() override;
- void Deactivate() override;
- // GraphCanvas::GraphCanvasRequestBus overrides ...
- AZ::Entity* CreateBookmarkAnchor() const override;
- AZ::Entity* CreateScene() const override;
- AZ::Entity* CreateCoreNode() const override;
- AZ::Entity* CreateGeneralNode(const char* nodeType) const override;
- AZ::Entity* CreateCommentNode() const override;
- AZ::Entity* CreateWrapperNode(const char* nodeType) const override;
- AZ::Entity* CreateNodeGroup() const override;
- AZ::Entity* CreateCollapsedNodeGroup(const GraphCanvas::CollapsedNodeGroupConfiguration& groupedNodeConfiguration) const override;
- AZ::Entity* CreateSlot(const AZ::EntityId& nodeId, const GraphCanvas::SlotConfiguration& slotConfiguration) const override;
- GraphCanvas::NodePropertyDisplay* CreateBooleanNodePropertyDisplay(GraphCanvas::BooleanDataInterface* dataInterface) const override;
- GraphCanvas::NodePropertyDisplay* CreateNumericNodePropertyDisplay(GraphCanvas::NumericDataInterface* dataInterface) const override;
- GraphCanvas::NodePropertyDisplay* CreateComboBoxNodePropertyDisplay(GraphCanvas::ComboBoxDataInterface* dataInterface) const override;
- GraphCanvas::NodePropertyDisplay* CreateEntityIdNodePropertyDisplay(GraphCanvas::EntityIdDataInterface* dataInterface) const override;
- GraphCanvas::NodePropertyDisplay* CreateReadOnlyNodePropertyDisplay(GraphCanvas::ReadOnlyDataInterface* dataInterface) const override;
- GraphCanvas::NodePropertyDisplay* CreateStringNodePropertyDisplay(GraphCanvas::StringDataInterface* dataInterface) const override;
- GraphCanvas::NodePropertyDisplay* CreateVectorNodePropertyDisplay(GraphCanvas::VectorDataInterface* dataInterface) const override;
- GraphCanvas::NodePropertyDisplay* CreateAssetIdNodePropertyDisplay(GraphCanvas::AssetIdDataInterface* dataInterface) const override;
- AZ::Entity* CreatePropertySlot(const AZ::EntityId& nodeId, const AZ::Crc32& propertyId, const GraphCanvas::SlotConfiguration& slotConfiguration) const override;
- };
- }
|