DeveloperUtils.h 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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 <GraphCanvas/Types/Endpoint.h>
  10. #include <GraphCanvas/Widgets/NodePalette/TreeItems/NodePaletteTreeItem.h>
  11. #include <ScriptCanvas/Bus/NodeIdPair.h>
  12. #include <ScriptCanvas/Core/Endpoint.h>
  13. #include <ScriptCanvas/Data/Data.h>
  14. namespace ScriptCanvasDeveloperEditor
  15. {
  16. class AutomationInterface
  17. {
  18. public:
  19. virtual void SetupInterface(const AZ::EntityId& activeGraphCanvasGraphId, const ScriptCanvas::ScriptCanvasId& activeScriptCanvasId) = 0;
  20. virtual void OnProcessingComplete() {};
  21. };
  22. class ProcessNodePaletteInterface
  23. : public AutomationInterface
  24. {
  25. public:
  26. virtual bool ShouldProcessItem(const GraphCanvas::NodePaletteTreeItem* nodePaletteTreeItem) const = 0;
  27. virtual void ProcessItem(const GraphCanvas::NodePaletteTreeItem* nodePaletteTreeItem) = 0;
  28. };
  29. class ProcessVariablePaletteInterface
  30. : public AutomationInterface
  31. {
  32. public:
  33. virtual bool ShouldProcessVariableType(const ScriptCanvas::Data::Type& dataType) const = 0;
  34. virtual void ProcessVariableType(const ScriptCanvas::Data::Type& dataType) = 0;
  35. };
  36. class DeveloperUtils
  37. {
  38. public:
  39. enum ConnectionStyle
  40. {
  41. NoConnections,
  42. SingleExecutionConnection
  43. };
  44. struct CreateConnectedChainConfig
  45. {
  46. bool m_skipHandlers = false;
  47. ConnectionStyle m_connectionStyle = ConnectionStyle::NoConnections;
  48. ScriptCanvasEditor::NodeIdPair m_fallbackNode;
  49. GraphCanvas::Endpoint m_previousEndpoint;
  50. };
  51. static ScriptCanvasEditor::NodeIdPair HandleMimeEvent(GraphCanvas::GraphCanvasMimeEvent* mimeEvent, GraphCanvas::GraphId graphCanvasGraphId, const QRectF& viewportRectangle, int& widthOffset, int& heightOffset, int& maxRowHeight, AZ::Vector2 spacing);
  52. static void UpdateViewportPositionOffsetForNode(GraphCanvas::NodeId nodeId, const QRectF& viewportRectangle, int& widthOffset, int& heightOffset, int& maxRowHeight, AZ::Vector2 spacing);
  53. static bool CreateConnectedChain(const ScriptCanvasEditor::NodeIdPair& nodeIdPair, CreateConnectedChainConfig& connectionConfig);
  54. static void ProcessNodePalette(ProcessNodePaletteInterface& processNodePaletteInterface);
  55. static void ProcessVariablePalette(ProcessVariablePaletteInterface& processVariablePaletteInterface);
  56. };
  57. }