Integrating up through commit 90f050496
This commit is contained in:
@@ -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>&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>&New Script</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_New_Function">
|
||||
<property name="text">
|
||||
<string>&Function</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_New_Editor_Graph">
|
||||
<property name="text">
|
||||
<string>&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"/>
|
||||
|
||||
Reference in New Issue
Block a user