VariableListFullCreation.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. #include <QMenu>
  9. #include <GraphCanvas/Components/SceneBus.h>
  10. #include <GraphCanvas/Components/GridBus.h>
  11. #include <GraphCanvas/Components/VisualBus.h>
  12. #include <GraphCanvas/Editor/EditorTypes.h>
  13. #include <GraphCanvas/Widgets/GraphCanvasGraphicsView/GraphCanvasGraphicsView.h>
  14. #include <GraphCanvas/Widgets/NodePalette/TreeItems/NodePaletteTreeItem.h>
  15. #include <Editor/View/Widgets/NodePalette/CreateNodeMimeEvent.h>
  16. #include <ScriptCanvas/Bus/RequestBus.h>
  17. #include <ScriptCanvas/Variable/VariableBus.h>
  18. #include <Editor/Include/ScriptCanvas/Bus/NodeIdPair.h>
  19. #include <ScriptCanvasDeveloperEditor/AutomationActions/VariableListFullCreation.h>
  20. #include <ScriptCanvasDeveloperEditor/DeveloperUtils.h>
  21. namespace ScriptCanvasDeveloperEditor
  22. {
  23. namespace VariablePaletteFullCreation
  24. {
  25. class VariablePaletteFullCreationInterface
  26. : public ProcessVariablePaletteInterface
  27. {
  28. public:
  29. VariablePaletteFullCreationInterface()
  30. {
  31. m_variableNameFormat = AZ::Uuid::CreateRandom().ToString<AZStd::string>().c_str();
  32. m_variableNameFormat += " %i";
  33. }
  34. virtual ~VariablePaletteFullCreationInterface() = default;
  35. void SetupInterface([[maybe_unused]] const AZ::EntityId& graphCanvasId, const ScriptCanvas::ScriptCanvasId& scriptCanvasId)
  36. {
  37. m_variableRequests = ScriptCanvas::GraphVariableManagerRequestBus::FindFirstHandler(scriptCanvasId);
  38. }
  39. bool ShouldProcessVariableType([[maybe_unused]] const ScriptCanvas::Data::Type& dataType) const
  40. {
  41. return true;
  42. }
  43. void ProcessVariableType(const ScriptCanvas::Data::Type& dataType)
  44. {
  45. AZStd::string variableName = AZStd::string::format(m_variableNameFormat.c_str(), m_variableCounter);
  46. ScriptCanvas::Datum datum(dataType, ScriptCanvas::Datum::eOriginality::Original);
  47. AZ::Outcome<ScriptCanvas::VariableId, AZStd::string> outcome = AZ::Failure(AZStd::string());
  48. m_variableRequests->AddVariable(variableName, datum, false);
  49. ++m_variableCounter;
  50. }
  51. private:
  52. AZStd::string m_variableNameFormat;
  53. int m_variableCounter = 0;
  54. ScriptCanvas::GraphVariableManagerRequests* m_variableRequests = nullptr;
  55. };
  56. void VariablePaletteFullCreationAction()
  57. {
  58. ScriptCanvasEditor::AutomationRequestBus::Broadcast(&ScriptCanvasEditor::AutomationRequests::SignalAutomationBegin);
  59. VariablePaletteFullCreationInterface fullCreationInterface;
  60. DeveloperUtils::ProcessVariablePalette(fullCreationInterface);
  61. ScriptCanvasEditor::AutomationRequestBus::Broadcast(&ScriptCanvasEditor::AutomationRequests::SignalAutomationEnd);
  62. }
  63. QAction* CreateVariablePaletteFullCreationAction(QMenu* mainMenu)
  64. {
  65. QAction* createVariablePaletteAction = nullptr;
  66. if (mainMenu)
  67. {
  68. createVariablePaletteAction = mainMenu->addAction(QAction::tr("Create All Variables"));
  69. createVariablePaletteAction->setAutoRepeat(false);
  70. createVariablePaletteAction->setToolTip("Tries to create every variable in the variable palette. All of them. At once.");
  71. createVariablePaletteAction->setShortcut(QKeySequence(QAction::tr("Ctrl+Shift+j", "Debug|Create Variable Palette")));
  72. QObject::connect(createVariablePaletteAction, &QAction::triggered, &VariablePaletteFullCreationAction);
  73. }
  74. return createVariablePaletteAction;
  75. }
  76. }
  77. }