Integrating up through commit 90f050496

This commit is contained in:
alexpete
2021-04-07 14:03:29 -07:00
parent 8f2ed080a9
commit c2cbd430fe
2694 changed files with 285622 additions and 176874 deletions
@@ -142,6 +142,8 @@
#include <Editor/View/Windows/Tools/UpgradeTool/UpgradeHelper.h>
#include <Editor/View/Windows/Tools/UpgradeTool/VersionExplorer.h>
#include <Editor/View/Widgets/VariablePanel/SlotTypeSelectorWidget.h>
// Save Format Conversion
#include <AzCore/Component/EntityUtils.h>
#include <Editor/Include/ScriptCanvas/Components/EditorGraph.h>
@@ -160,6 +162,7 @@
#include <Editor/QtMetaTypes.h>
#include <GraphCanvas/Components/SceneBus.h>
namespace ScriptCanvasEditor
{
using namespace AzToolsFramework;
@@ -470,8 +473,6 @@ namespace ScriptCanvasEditor
scriptEventAssetFilter->SetAssetGroup(ScriptEvents::ScriptEventsAsset::GetGroup());
scriptEventAssetFilter->SetFilterPropagation(AzToolsFramework::AssetBrowser::AssetBrowserEntryFilter::PropagateDirection::Down);
// Filter doesn't actually work for whatever reason
//m_scriptEventsAssetModel->SetFilter(AzToolsFramework::AssetBrowser::FilterConstType(scriptEventAssetFilter));
m_scriptEventsAssetModel->setSourceModel(assetBrowserModel);
}
@@ -482,8 +483,6 @@ namespace ScriptCanvasEditor
scriptCanvasAssetFilter->SetAssetGroup(ScriptCanvasAsset::Description::GetGroup(azrtti_typeid<ScriptCanvasAsset>()));
scriptCanvasAssetFilter->SetFilterPropagation(AzToolsFramework::AssetBrowser::AssetBrowserEntryFilter::PropagateDirection::Down);
// Filter doesn't actually work for whatever reason
//m_scriptCanvasAssetModel->SetFilter(AzToolsFramework::AssetBrowser::FilterConstType(scriptCanvasAssetFilter));
m_scriptCanvasAssetModel->setSourceModel(assetBrowserModel);
}
@@ -537,14 +536,6 @@ namespace ScriptCanvasEditor
m_editorToolbar->AddCreationAction(m_createScriptCanvas);
RegisterObject(AutomationIds::CreateScriptCanvasButton, m_createScriptCanvas);
m_createFunction = new QToolButton();
m_createFunction->setIcon(QIcon(ScriptCanvas::AssetDescription::GetIconPath<ScriptCanvasFunctionAsset>()));
m_createFunction->setToolTip("Creates a new Script Canvas Function Graph");
QObject::connect(m_createFunction, &QToolButton::clicked, this, &MainWindow::OnFileNewFunction);
m_editorToolbar->AddCreationAction(m_createFunction);
RegisterObject(AutomationIds::CreateScriptCanvasFunctionButton, m_createFunction);
}
{
@@ -836,11 +827,6 @@ namespace ScriptCanvasEditor
connect(ui->action_New_Script, &QAction::triggered, this, &MainWindow::OnFileNew);
ui->action_New_Script->setShortcut(QKeySequence(QKeySequence::New));
connect(ui->actionFunction, &QAction::triggered, this, &MainWindow::OnFileNewFunction);
//ui->action_New_Function->setShortcut(QKeySequence(QKeySequence::New));
connect(ui->actionEditor_Graph, &QAction::triggered, this, &MainWindow::OnFileNewFunction);
connect(ui->action_Open, &QAction::triggered, this, &MainWindow::OnFileOpen);
ui->action_Open->setShortcut(QKeySequence(QKeySequence::Open));
@@ -969,7 +955,8 @@ namespace ScriptCanvasEditor
}
}
UpdateMenuState(enabled);
UpdateMenuState(enabled);
}
void MainWindow::UpdateRecentMenu()
@@ -1159,6 +1146,44 @@ namespace ScriptCanvasEditor
return m_variableDockWidget->IsValidVariableType(dataType);
}
bool MainWindow::ShowSlotTypeSelector(ScriptCanvas::Slot* slot, const QPoint& scenePosition, VariablePaletteRequests::SlotSetup& outSetup)
{
AZ_Assert(slot, "A valid slot must be provided");
if (slot)
{
m_slotTypeSelector = new SlotTypeSelectorWidget(GetActiveScriptCanvasId(), this); // Recreate the widget every time because of https://bugreports.qt.io/browse/QTBUG-76509
m_slotTypeSelector->PopulateVariablePalette(m_variablePaletteTypes);
// Only set the slot name if the user has already configured this slot, so if they are creating
// for the first time they will see the placeholder text instead
bool isValidVariableType = false;
VariablePaletteRequestBus::BroadcastResult(isValidVariableType, &VariablePaletteRequests::IsValidVariableType, slot->GetDataType());
if (isValidVariableType)
{
m_slotTypeSelector->SetSlotName(slot->GetName());
}
m_slotTypeSelector->move(scenePosition);
m_slotTypeSelector->setEnabled(true);
m_slotTypeSelector->update();
if (m_slotTypeSelector->exec() != QDialog::Rejected)
{
outSetup.m_name = m_slotTypeSelector->GetSlotName();
outSetup.m_type = m_slotTypeSelector->GetSelectedType();
}
else
{
return false;
}
delete m_slotTypeSelector;
}
return true;
}
void MainWindow::OpenValidationPanel()
{
if (!m_validationDockWidget->isVisible())
@@ -1736,11 +1761,6 @@ namespace ScriptCanvasEditor
MakeNewFile<ScriptCanvasAsset, ScriptCanvasAssetHandler>();
}
void MainWindow::OnFileNewFunction()
{
MakeNewFile<ScriptCanvasFunctionAsset, ScriptCanvasFunctionAssetHandler>();
}
int MainWindow::InsertTabForAsset(AZStd::string_view assetPath, AZ::Data::AssetId assetId, int tabIndex)
{
int outTabIndex = -1;
@@ -3598,14 +3618,12 @@ namespace ScriptCanvasEditor
ui->action_EnableSelection->setEnabled(enabled);
ui->action_DisableSelection->setEnabled(enabled);
m_createFunctionOutput->setEnabled(enabled);
m_createFunctionInput->setEnabled(enabled);
// File Menu
ui->action_Close->setEnabled(enabled);
bool isFunctionGraph = false;
EditorGraphRequestBus::EventResult(isFunctionGraph, GetActiveScriptCanvasId(), &EditorGraphRequests::IsFunctionGraph);
m_createFunctionInput->setEnabled(isFunctionGraph && enabled);
m_createFunctionOutput->setEnabled(isFunctionGraph && enabled);
RefreshGraphPreferencesAction();
UpdateAssignToSelectionState();
@@ -3715,7 +3733,7 @@ namespace ScriptCanvasEditor
void MainWindow::CreateFunctionInput()
{
PushPreventUndoStateUpdate();
CreateExecutionNodeling(-1);
CreateFunctionDefinitionNode(-1);
PopPreventUndoStateUpdate();
PostUndoPoint(GetActiveScriptCanvasId());
@@ -3724,13 +3742,13 @@ namespace ScriptCanvasEditor
void MainWindow::CreateFunctionOutput()
{
PushPreventUndoStateUpdate();
CreateExecutionNodeling(1);
CreateFunctionDefinitionNode(1);
PopPreventUndoStateUpdate();
PostUndoPoint(GetActiveScriptCanvasId());
}
void MainWindow::CreateExecutionNodeling(int positionOffset)
void MainWindow::CreateFunctionDefinitionNode(int positionOffset)
{
ScriptCanvas::ScriptCanvasId scriptCanvasId = GetActiveScriptCanvasId();
@@ -3742,14 +3760,9 @@ namespace ScriptCanvasEditor
QRectF viewBounds;
GraphCanvas::ViewRequestBus::EventResult(viewBounds, viewId, &GraphCanvas::ViewRequests::GetCompleteArea);
AZStd::string rootName = "New Output";
if (positionOffset < 0)
{
rootName = "New Input";
}
NodeIdPair nodeIdPair = Nodes::CreateExecutionNodeling(scriptCanvasId, rootName);
const bool isInput = positionOffset < 0;
const AZStd::string rootName = isInput ? "New Input" : "New Output";
NodeIdPair nodeIdPair = Nodes::CreateFunctionDefinitionNode(scriptCanvasId, isInput, rootName);
GraphCanvas::SceneRequests* sceneRequests = GraphCanvas::SceneRequestBus::FindFirstHandler(graphCanvasGraphId);
@@ -4151,6 +4164,13 @@ namespace ScriptCanvasEditor
contextMenu.AddMenuAction(aznew ConvertVariableNodeToReferenceAction(&contextMenu));
}
if (descriptorType == NodeDescriptorType::FunctionDefinitionNode)
{
NodeDescriptorComponent* descriptor = nullptr;
NodeDescriptorRequestBus::EventResult(descriptor, nodeId, &NodeDescriptorRequests::GetDescriptorComponent);
contextMenu.AddMenuAction(aznew RenameFunctionDefinitionNodeAction(descriptor, &contextMenu));
}
return HandleContextMenu(contextMenu, nodeId, screenPoint, scenePoint);
}
@@ -4276,6 +4296,7 @@ namespace ScriptCanvasEditor
contextMenu.AddMenuAction(aznew ConvertReferenceToVariableNodeAction(&contextMenu));
contextMenu.AddMenuAction(aznew ExposeSlotMenuAction(&contextMenu));
contextMenu.AddMenuAction(aznew CreateAzEventHandlerSlotMenuAction(&contextMenu));
contextMenu.AddMenuAction(aznew SetDataSlotTypeMenuAction(&contextMenu));
return HandleContextMenu(contextMenu, slotId, screenPoint, scenePoint);
}
@@ -4870,12 +4891,13 @@ namespace ScriptCanvasEditor
m_variableDockWidget->setEnabled(false);
m_propertyGrid->DisableGrid();
m_editorToolbar->OnViewDisabled();
m_createFunction->setEnabled(false);
m_createFunctionInput->setEnabled(false);
m_createFunctionOutput->setEnabled(false);
m_createScriptCanvas->setEnabled(false);
UpdateMenuState(false);
ui->action_New_Function->setEnabled(false);
ui->action_New_Script->setEnabled(false);
m_autoSaveTimer.stop();
@@ -4894,10 +4916,8 @@ namespace ScriptCanvasEditor
m_propertyGrid->EnableGrid();
m_editorToolbar->OnViewEnabled();
m_createFunction->setEnabled(true);
m_createScriptCanvas->setEnabled(true);
ui->action_New_Function->setEnabled(true);
ui->action_New_Script->setEnabled(true);
UpdateMenuState(true);
@@ -224,10 +224,12 @@ namespace ScriptCanvasEditor
class GraphValidationDockWidget;
class MainWindowStatusWidget;
class StatisticsDialog;
class SlotTypeSelectorWidget;
// Custom Context Menus
class SceneContextMenu;
class ConnectionContextMenu;
class RenameFunctionDefinitionNodeAction;
class MainWindow
: public QMainWindow
@@ -289,8 +291,8 @@ namespace ScriptCanvasEditor
// VariablePaletteRequestBus
void RegisterVariableType(const ScriptCanvas::Data::Type& variableType) override;
bool IsValidVariableType(const ScriptCanvas::Data::Type& dataType) const override;
bool ShowSlotTypeSelector(ScriptCanvas::Slot* slot, const QPoint& scenePosition, VariablePaletteRequests::SlotSetup&) override;
////
// GraphCanvas::AssetEditorRequestBus
@@ -334,7 +336,6 @@ namespace ScriptCanvasEditor
// File menu
void OnFileNew();
void OnFileNewFunction();
bool OnFileSave(const Callbacks::OnSave& saveCB);
bool OnFileSaveAs(const Callbacks::OnSave& saveCB);
@@ -451,7 +452,6 @@ namespace ScriptCanvasEditor
void RemoveScriptCanvasAsset(const AZ::Data::AssetId& assetId);
void OnChangeActiveGraphTab(AZ::Data::AssetId) override;
void CreateNewFunctionAsset() override { OnFileNewFunction(); }
void CreateNewRuntimeAsset() override { OnFileNew(); }
GraphCanvas::GraphId GetActiveGraphCanvasGraphId() const override;
@@ -614,7 +614,7 @@ namespace ScriptCanvasEditor
void CreateFunctionInput();
void CreateFunctionOutput();
void CreateExecutionNodeling(int positionOffset);
void CreateFunctionDefinitionNode(int positionOffset);
int CreateAssetTab(const AZ::Data::AssetId& assetId, int tabIndex = -1);
@@ -713,7 +713,6 @@ namespace ScriptCanvasEditor
QToolButton* m_createFunctionOutput = nullptr;
QToolButton* m_createScriptCanvas = nullptr;
QToolButton* m_createFunction = nullptr;
QMenu* m_selectedEntityMenu = nullptr;
@@ -728,6 +727,8 @@ namespace ScriptCanvasEditor
GraphCanvas::BookmarkDockWidget* m_bookmarkDockWidget = nullptr;
GraphCanvas::MiniMapDockWidget* m_minimap = nullptr;
LoggingWindow* m_loggingWindow = nullptr;
SlotTypeSelectorWidget* m_slotTypeSelector = nullptr;
AzQtComponents::WindowDecorationWrapper* m_presetWrapper = nullptr;
GraphCanvas::ConstructPresetDialog* m_presetEditor = nullptr;
@@ -15,12 +15,14 @@
#include <QApplication>
#include <QClipboard>
#include <QMimeData>
#include <QInputDialog>
#include <AzToolsFramework/API/ToolsApplicationAPI.h>
#include <Editor/Nodes/NodeUtils.h>
#include <Editor/View/Widgets/ScriptCanvasNodePaletteDockWidget.h>
#include <Editor/View/Widgets/VariablePanel/GraphVariablesTableView.h>
#include <Editor/View/Widgets/VariablePanel/SlotTypeSelectorWidget.h>
#include <ScriptCanvas/Bus/EditorScriptCanvasBus.h>
#include <ScriptCanvas/Bus/RequestBus.h>
@@ -54,6 +56,8 @@
#include <ScriptCanvas/Core/Node.h>
#include <ScriptCanvas/GraphCanvas/MappingBus.h>
#include <GraphCanvas/Components/Nodes/NodeTitleBus.h>
#include <GraphCanvas/Components/NodeDescriptors/FunctionDefinitionNodeDescriptorComponent.h>
namespace ScriptCanvasEditor
{
//////////////////////////////
@@ -173,7 +177,7 @@ namespace ScriptCanvasEditor
}
ScriptCanvas::Slot* SlotManipulationMenuAction::GetScriptCanvasSlot(const GraphCanvas::Endpoint& endpoint) const
ScriptCanvas::Slot* SlotManipulationMenuAction::GetScriptCanvasSlot(const GraphCanvas::Endpoint& endpoint)
{
GraphCanvas::GraphId graphId;
GraphCanvas::SceneMemberRequestBus::EventResult(graphId, endpoint.GetNodeId(), &GraphCanvas::SceneMemberRequests::GetScene);
@@ -467,7 +471,12 @@ namespace ScriptCanvasEditor
GraphCanvas::NodeId nodeId;
GraphCanvas::SlotRequestBus::EventResult(nodeId, slotId, &GraphCanvas::SlotRequests::GetNode);
NodeIdPair nodePair = ScriptCanvasEditor::Nodes::CreateExecutionNodeling(scriptCanvasGraphId);
// Set the connection type for the node opposite of what it actually is because we're interested in the connection type of the node we're
// exposing, not the type of the slot we just created
ScriptCanvas::ConnectionType scriptCanvasConnectionType = (connectionType == GraphCanvas::CT_Input) ? ScriptCanvas::ConnectionType::Input : ScriptCanvas::ConnectionType::Output;
bool isInput = (scriptCanvasConnectionType == ScriptCanvas::ConnectionType::Output);
NodeIdPair nodePair = ScriptCanvasEditor::Nodes::CreateFunctionDefinitionNode(scriptCanvasGraphId, isInput);
GraphCanvas::SceneRequestBus::Event(graphId, &GraphCanvas::SceneRequests::AddNode, nodePair.m_graphCanvasId, scenePos, false);
@@ -490,13 +499,8 @@ namespace ScriptCanvasEditor
// Set the node title, subtitle, tooltip
GraphCanvas::NodeTitleRequestBus::Event(nodePair.m_graphCanvasId, &GraphCanvas::NodeTitleRequests::SetTitle, fullTitle);
GraphCanvas::NodeTitleRequestBus::Event(nodePair.m_graphCanvasId, &GraphCanvas::NodeTitleRequests::SetSubTitle, "Function");
GraphCanvas::NodeRequestBus::Event(nodePair.m_graphCanvasId, &GraphCanvas::NodeRequests::SetTooltip, name);
// Set the connection type for the node opposite of what it actually is because we're interested in the connection type of the node we're
// exposing, not the type of the slot we just created
ScriptCanvas::ConnectionType scriptCanvasConnectionType = (connectionType == GraphCanvas::CT_Input) ? ScriptCanvas::ConnectionType::Input : ScriptCanvas::ConnectionType::Output;
ScriptCanvas::SlotDescriptor descriptor;
descriptor.m_slotType = ScriptCanvas::SlotTypeDescriptor::Execution;
descriptor.m_connectionType = scriptCanvasConnectionType;
@@ -584,20 +588,7 @@ namespace ScriptCanvasEditor
if (variable)
{
if (connectionType == GraphCanvas::CT_Input)
{
if (!variable->IsInScope(ScriptCanvas::VariableFlags::Scope::Input))
{
variable->SetScope(ScriptCanvas::VariableFlags::Scope::Input);
}
}
else if (connectionType == GraphCanvas::CT_Output)
{
if (!variable->IsInScope(ScriptCanvas::VariableFlags::Scope::Output))
{
variable->SetScope(ScriptCanvas::VariableFlags::Scope::Output);
}
}
variable->SetScope(ScriptCanvas::VariableFlags::Scope::Function);
}
}
}
@@ -607,6 +598,100 @@ namespace ScriptCanvasEditor
return GraphCanvas::ContextMenuAction::SceneReaction::PostUndo;
}
//////////////////////////////////
// SetDataSlotTypeMenuAction
//////////////////////////////////
SetDataSlotTypeMenuAction::SetDataSlotTypeMenuAction(QObject* parent)
: GraphCanvas::SlotContextMenuAction("Set Slot Type", parent)
{
}
void SetDataSlotTypeMenuAction::RefreshAction(const GraphCanvas::GraphId& graphId, const AZ::EntityId& targetId)
{
ScriptCanvas::Slot* slot = GetSlot(graphId, targetId);
bool isEnabled = slot && slot->IsUserAdded() && slot->GetDescriptor().IsData();
setEnabled(isEnabled);
}
GraphCanvas::ContextMenuAction::SceneReaction SetDataSlotTypeMenuAction::TriggerAction(const GraphCanvas::GraphId& graphId, const AZ::Vector2& scenePos)
{
ScriptCanvas::Slot* slot = GetSlot(graphId, GetTargetId());
if (!slot)
{
return GraphCanvas::ContextMenuAction::SceneReaction::Nothing;
}
// Show the selection dialog
bool createSlot = false;
VariablePaletteRequests::SlotSetup selectedSlotSetup;
QPoint scenePoint(scenePos.GetX(), scenePos.GetY());
VariablePaletteRequestBus::BroadcastResult(createSlot, &VariablePaletteRequests::ShowSlotTypeSelector, slot, scenePoint, selectedSlotSetup);
bool changed = false;
if (createSlot && !selectedSlotSetup.m_type.IsNull())
{
if (slot)
{
auto displayType = ScriptCanvas::Data::FromAZType(selectedSlotSetup.m_type);
if (displayType.IsValid())
{
slot->SetDisplayType(displayType);
changed = true;
}
if (!selectedSlotSetup.m_name.empty())
{
slot->Rename(selectedSlotSetup.m_name);
changed = true;
}
}
}
return changed ? GraphCanvas::ContextMenuAction::SceneReaction::PostUndo : GraphCanvas::ContextMenuAction::SceneReaction::Nothing;
}
bool SetDataSlotTypeMenuAction::IsSupportedSlotType(const AZ::EntityId& slotId)
{
GraphCanvas::Endpoint endpoint;
GraphCanvas::SlotRequestBus::EventResult(endpoint, slotId, &GraphCanvas::SlotRequests::GetEndpoint);
const ScriptCanvas::Slot* slot = SlotManipulationMenuAction::GetScriptCanvasSlot(endpoint);
if (slot)
{
if (slot->GetDescriptor().IsData())
{
return true;
}
}
return false;
}
ScriptCanvas::Slot* SetDataSlotTypeMenuAction::GetSlot(const GraphCanvas::GraphId& graphId, const AZ::EntityId& targetId)
{
ScriptCanvas::ScriptCanvasId scriptCanvasGraphId;
GeneralRequestBus::BroadcastResult(scriptCanvasGraphId, &GeneralRequests::GetScriptCanvasId, graphId);
GraphCanvas::Endpoint endpoint;
GraphCanvas::SlotRequestBus::EventResult(endpoint, targetId, &GraphCanvas::SlotRequests::GetEndpoint);
ScriptCanvas::Endpoint scEndpoint;
EditorGraphRequestBus::EventResult(scEndpoint, scriptCanvasGraphId, &EditorGraphRequests::ConvertToScriptCanvasEndpoint, endpoint);
ScriptCanvas::Slot* slot = nullptr;
ScriptCanvas::NodeRequestBus::EventResult(slot, scEndpoint.GetNodeId(), &ScriptCanvas::NodeRequests::GetSlot, scEndpoint.GetSlotId());
return slot;
}
//////////////////////////////////
// CreateAzEventHandlerSlotMenuAction
//////////////////////////////////
CreateAzEventHandlerSlotMenuAction::CreateAzEventHandlerSlotMenuAction(QObject* parent)
: SlotContextMenuAction("Create event handler", parent)
{
@@ -853,6 +938,34 @@ namespace ScriptCanvasEditor
// TODO: Filter nodes.
}
//////////////////////////
// RenameFunctionDefinitionNodeAction
//////////////////////////
RenameFunctionDefinitionNodeAction::RenameFunctionDefinitionNodeAction(NodeDescriptorComponent* descriptor, QObject* parent)
: NodeContextMenuAction("Rename Function", parent)
, m_descriptor(descriptor)
{}
void RenameFunctionDefinitionNodeAction::RefreshAction(const GraphCanvas::GraphId& graphId, const AZ::EntityId& /*targetId*/)
{
AZStd::vector<AZ::EntityId> selectedNodes;
GraphCanvas::SceneRequestBus::EventResult(selectedNodes, graphId, &GraphCanvas::SceneRequests::GetSelectedNodes);
setEnabled(selectedNodes.size() == 1);
}
GraphCanvas::ContextMenuAction::SceneReaction RenameFunctionDefinitionNodeAction::TriggerAction(const GraphCanvas::GraphId&, const AZ::Vector2&)
{
if (FunctionDefinitionNodeDescriptorComponent::RenameDialog(azrtti_cast<FunctionDefinitionNodeDescriptorComponent*>(m_descriptor)))
{
return GraphCanvas::ContextMenuAction::SceneReaction::PostUndo;
}
return GraphCanvas::ContextMenuAction::SceneReaction::Nothing;
}
#include "Editor/View/Windows/moc_ScriptCanvasContextMenus.cpp"
}
@@ -23,8 +23,10 @@
#include <GraphCanvas/Widgets/EditorContextMenu/ContextMenus/SceneContextMenu.h>
#include <GraphCanvas/Widgets/EditorContextMenu/ContextMenus/ConnectionContextMenu.h>
#include <GraphCanvas/Widgets/EditorContextMenu/ContextMenus/SlotContextMenu.h>
#include <GraphCanvas/Widgets/EditorContextMenu/ContextMenus/NodeContextMenu.h>
#include <GraphCanvas/Widgets/EditorContextMenu/ContextMenuActions/SceneMenuActions/SceneContextMenuAction.h>
#include <GraphCanvas/Widgets/EditorContextMenu/ContextMenuActions/SlotMenuActions/SlotContextMenuAction.h>
#include <GraphCanvas/Widgets/EditorContextMenu/ContextMenuActions/NodeMenuActions/NodeContextMenuAction.h>
#endif
namespace ScriptCanvasEditor
@@ -112,8 +114,8 @@ namespace ScriptCanvasEditor
SlotManipulationMenuAction(AZStd::string_view actionName, QObject* parent);
protected:
ScriptCanvas::Slot* GetScriptCanvasSlot(const GraphCanvas::Endpoint& endpoint) const;
static ScriptCanvas::Slot* GetScriptCanvasSlot(const GraphCanvas::Endpoint& endpoint) ;
};
class ConvertReferenceToVariableNodeAction
@@ -153,6 +155,25 @@ namespace ScriptCanvasEditor
void CreateNodeling(const GraphCanvas::GraphId& graphId, AZ::EntityId scriptCanvasGraphId, GraphCanvas::GraphId slotId, const AZ::Vector2& scenePos, GraphCanvas::ConnectionType connectionType);
};
class SetDataSlotTypeMenuAction
: public GraphCanvas::SlotContextMenuAction
{
public:
AZ_CLASS_ALLOCATOR(SetDataSlotTypeMenuAction, AZ::SystemAllocator, 0);
explicit SetDataSlotTypeMenuAction(QObject* parent);
virtual ~SetDataSlotTypeMenuAction() = default;
static bool IsSupportedSlotType(const AZ::EntityId& slotId);
void RefreshAction(const GraphCanvas::GraphId& graphId, const AZ::EntityId& targetId) override;
GraphCanvas::ContextMenuAction::SceneReaction TriggerAction(const GraphCanvas::GraphId& graphId, const AZ::Vector2& scenePos) override;
private:
ScriptCanvas::Slot* GetSlot(const GraphCanvas::GraphId& graphId, const AZ::EntityId& targetId);
};
//! Context Menu Action for Creating an AzEventHandler node from a data slot of a Behavior Method node
//! which returns an AZ::Event<Params...> type
class CreateAzEventHandlerSlotMenuAction
@@ -172,6 +193,7 @@ namespace ScriptCanvasEditor
const AZ::BehaviorMethod* m_methodWithAzEventReturn{};
GraphCanvas::Endpoint m_methodNodeAzEventEndpoint;
};
/////////////////
@@ -222,4 +244,27 @@ namespace ScriptCanvasEditor
AZ::EntityId m_connectionId;
};
//////////////////////////
// RenameFunctionDefinitionNode
//////////////////////////
class NodeDescriptorComponent;
//! Context menu to rename a node
class RenameFunctionDefinitionNodeAction
: public GraphCanvas::NodeContextMenuAction
{
public:
AZ_CLASS_ALLOCATOR(RenameFunctionDefinitionNodeAction, AZ::SystemAllocator, 0);
RenameFunctionDefinitionNodeAction(NodeDescriptorComponent* descriptor, QObject* parent);
virtual ~RenameFunctionDefinitionNodeAction() = default;
void RefreshAction(const GraphCanvas::GraphId& graphId, const AZ::EntityId& targetId) override;
GraphCanvas::ContextMenuAction::SceneReaction TriggerAction(const GraphCanvas::GraphId& graphId, const AZ::Vector2& scenePos) override;
NodeDescriptorComponent* m_descriptor;
};
}
@@ -57,7 +57,6 @@
<string>&amp;File</string>
</property>
<addaction name="action_New_Script"/>
<addaction name="actionFunction"/>
<addaction name="action_Open"/>
<addaction name="action_Save"/>
<addaction name="action_Save_As"/>
@@ -180,11 +179,6 @@
<string>&amp;New Script</string>
</property>
</action>
<action name="action_New_Function">
<property name="text">
<string>&amp;Function</string>
</property>
</action>
<action name="action_New_Editor_Graph">
<property name="text">
<string>&amp;Editor Graph</string>
@@ -781,11 +775,6 @@
<string>Editor Graph</string>
</property>
</action>
<action name="actionFunction">
<property name="text">
<string>New Function</string>
</property>
</action>
<addaction name="action_ViewNodePalette"/>
<addaction name="action_ViewOutline"/>
<addaction name="action_ViewDynamicEBusAssets"/>