diff --git a/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilder.cpp b/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilder.cpp index 31b63e8fad..60a3687d0d 100644 --- a/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilder.cpp +++ b/Gems/ScriptCanvas/Code/Builder/ScriptCanvasBuilder.cpp @@ -27,23 +27,24 @@ namespace BuildVariableOverridesCpp }; bool VersionConverter - ( [[maybe_unused]] AZ::SerializeContext& serializeContext - , [[maybe_unused]] AZ::SerializeContext::DataElementNode& rootElement) + ( AZ::SerializeContext& serializeContext + , AZ::SerializeContext::DataElementNode& rootElement) { - // #sc_editor_asset -// ScriptCanvasBuilder::BuildVariableOverrides overrides; -// overrides.m_source = SourceHandle(nullptr, assetHolder.GetAssetId().m_guid, {}); -// -// for (auto& variable : editableData.GetVariables()) -// { -// overrides.m_overrides.push_back(variable.m_graphVariable); -// } -// -// if (!rootElement.AddElementWithData(serializeContext, "runtimeDataOverrides", overrides)) -// { -// AZ_Error("ScriptCanvas", false, "EditorScriptCanvasComponent conversion failed: failed to add 'runtimeDataOverrides'"); -// return false; -// } + // #sc_editor_asset + ScriptCanvasBuilder::BuildVariableOverrides overrides; + overrides.m_source = SourceHandle(nullptr, assetHolder.GetAssetId().m_guid, {}); + + for (auto& variable : editableData.GetVariables()) + { + overrides.m_overrides.push_back(variable.m_graphVariable); + } + + if (!rootElement.AddElementWithData(serializeContext, "runtimeDataOverrides", overrides)) + { + AZ_Error("ScriptCanvas", false, "EditorScriptCanvasComponent conversion failed: failed to add 'runtimeDataOverrides'"); + return false; + } + return true; } } diff --git a/Gems/ScriptCanvas/Code/Editor/Settings.cpp b/Gems/ScriptCanvas/Code/Editor/Settings.cpp index 997ef4eadf..84744f77e3 100644 --- a/Gems/ScriptCanvas/Code/Editor/Settings.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Settings.cpp @@ -110,15 +110,14 @@ namespace ScriptCanvasEditor if (subElement) { -// #sc_editor_asset -// if (subElement->GetData(assetIds)) -// { -// assetSaveData.reserve(assetIds.size()); -// for (const AZ::Data::AssetId& assetId : assetIds) -// { -// assetSaveData.emplace_back(assetId); -// } -// } + if (subElement->GetData(assetIds)) + { + assetSaveData.reserve(assetIds.size()); + for (const AZ::Data::AssetId& assetId : assetIds) + { + assetSaveData.emplace_back(SourceHandle( nullptr, assetId.m_guid, "" )); + } + } } rootDataElementNode.RemoveElementByName(AZ_CRC_CE("ActiveAssetIds")); diff --git a/Gems/ScriptCanvas/Code/Editor/SystemComponent.cpp b/Gems/ScriptCanvas/Code/Editor/SystemComponent.cpp index 88ef93a4c4..0be2d564ee 100644 --- a/Gems/ScriptCanvas/Code/Editor/SystemComponent.cpp +++ b/Gems/ScriptCanvas/Code/Editor/SystemComponent.cpp @@ -212,7 +212,7 @@ namespace ScriptCanvasEditor if (!entitiesWithScriptCanvas.empty()) { QMenu* scriptCanvasMenu = nullptr; - // QAction* action = nullptr; + QAction* action = nullptr; // For entities with script canvas component, create a context menu to open any existing script canvases within each selected entity. for (const AZ::EntityId& entityId : entitiesWithScriptCanvas) @@ -245,32 +245,33 @@ namespace ScriptCanvasEditor AZStd::unordered_set< AZ::Data::AssetId > usedIds; - //#sc_editor_asset -// for (const auto& assetId : assetIds.values) -// { -// if (!assetId.IsValid() || usedIds.count(assetId) != 0) -// { -// continue; -// } -// -// entityMenu->setEnabled(true); -// -// usedIds.insert(assetId); -// -// AZStd::string rootPath; -// AZ::Data::AssetInfo assetInfo = AssetHelpers::GetAssetInfo(assetId, rootPath); -// -// AZStd::string displayName; -// AZ::StringFunc::Path::GetFileName(assetInfo.m_relativePath.c_str(), displayName); -// -// action = entityMenu->addAction(QString("%1").arg(QString(displayName.c_str()))); -// -// QObject::connect(action, &QAction::triggered, [assetId] -// { -// AzToolsFramework::OpenViewPane(LyViewPane::ScriptCanvas); -// GeneralRequestBus::Broadcast(&GeneralRequests::OpenScriptCanvasAsset, assetId, -1); -// }); -// } + for (const auto& assetId : assetIds.values) + { + if (!assetId.IsValid() || usedIds.count(assetId) != 0) + { + continue; + } + + entityMenu->setEnabled(true); + + usedIds.insert(assetId); + + AZStd::string rootPath; + AZ::Data::AssetInfo assetInfo = AssetHelpers::GetAssetInfo(assetId, rootPath); + + AZStd::string displayName; + AZ::StringFunc::Path::GetFileName(assetInfo.m_relativePath.c_str(), displayName); + + action = entityMenu->addAction(QString("%1").arg(QString(displayName.c_str()))); + + QObject::connect(action, &QAction::triggered, [assetId] + { + AzToolsFramework::OpenViewPane(LyViewPane::ScriptCanvas); + GeneralRequestBus::Broadcast(&GeneralRequests::OpenScriptCanvasAsset + , SourceHandle(nullptr, assetId.m_guid, "") + , Tracker::ScriptCanvasFileState::UNMODIFIED, -1); + }); + } } } } @@ -319,24 +320,26 @@ namespace ScriptCanvasEditor { isScriptCanvasAsset = true; } - // #sc_editor_asset -// if (isScriptCanvasAsset) -// { -// auto scriptCanvasEditorCallback = []([[maybe_unused]] const char* fullSourceFileNameInCall, const AZ::Uuid& sourceUUIDInCall) -// { -// AZ::Outcome openOutcome = AZ::Failure(AZStd::string()); -// const SourceAssetBrowserEntry* fullDetails = SourceAssetBrowserEntry::GetSourceByUuid(sourceUUIDInCall); -// if (fullDetails) -// { -// AzToolsFramework::OpenViewPane(LyViewPane::ScriptCanvas); -// -// AzToolsFramework::EditorRequests::Bus::Broadcast(&AzToolsFramework::EditorRequests::OpenViewPane, "Script Canvas"); -// GeneralRequestBus::BroadcastResult(openOutcome, &GeneralRequests::OpenScriptCanvasAsset, sourceUUIDInCall, -1); -// } -// }; -// -// openers.push_back({ "O3DE_ScriptCanvasEditor", "Open In Script Canvas Editor...", QIcon(), scriptCanvasEditorCallback }); -// } + + if (isScriptCanvasAsset) + { + auto scriptCanvasEditorCallback = []([[maybe_unused]] const char* fullSourceFileNameInCall, const AZ::Uuid& sourceUUIDInCall) + { + AZ::Outcome openOutcome = AZ::Failure(AZStd::string()); + const SourceAssetBrowserEntry* fullDetails = SourceAssetBrowserEntry::GetSourceByUuid(sourceUUIDInCall); + if (fullDetails) + { + AzToolsFramework::OpenViewPane(LyViewPane::ScriptCanvas); + + AzToolsFramework::EditorRequests::Bus::Broadcast(&AzToolsFramework::EditorRequests::OpenViewPane, "Script Canvas"); + GeneralRequestBus::BroadcastResult(openOutcome + , &GeneralRequests::OpenScriptCanvasAsset + , SourceHandle(nullptr, sourceUUIDInCall, ""), Tracker::ScriptCanvasFileState::UNMODIFIED, -1); + } + }; + + openers.push_back({ "O3DE_ScriptCanvasEditor", "Open In Script Canvas Editor...", QIcon(), scriptCanvasEditorCallback }); + } } void SystemComponent::OnUserSettingsActivated() diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/LoggingPanel/LoggingWindowTreeItems.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/LoggingPanel/LoggingWindowTreeItems.cpp index 636ee832d4..6936a0c368 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/LoggingPanel/LoggingWindowTreeItems.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/LoggingPanel/LoggingWindowTreeItems.cpp @@ -619,51 +619,54 @@ namespace ScriptCanvasEditor void ExecutionLogTreeItem::ScrapeGraphCanvasData() { - // #sc_editor_asset -// if (!m_graphCanvasGraphId.IsValid()) -// { -// GeneralRequestBus::BroadcastResult(m_graphCanvasGraphId, &GeneralRequests::FindGraphCanvasGraphIdByAssetId, GetAssetId()); -// -// if (!EditorGraphNotificationBus::Handler::BusIsConnected()) -// { -// ScriptCanvas::ScriptCanvasId scriptCanvasId; -// GeneralRequestBus::BroadcastResult(scriptCanvasId, &GeneralRequests::FindScriptCanvasIdByAssetId, GetAssetId()); -// -// EditorGraphNotificationBus::Handler::BusConnect(scriptCanvasId); -// } -// } -// -// if (m_graphCanvasGraphId.IsValid()) -// { -// if (!m_graphCanvasNodeId.IsValid()) -// { -// AssetGraphSceneBus::BroadcastResult(m_scriptCanvasNodeId, &AssetGraphScene::FindEditorNodeIdByAssetNodeId, GetAssetId(), m_scriptCanvasAssetNodeId); -// SceneMemberMappingRequestBus::EventResult(m_graphCanvasNodeId, m_scriptCanvasNodeId, &SceneMemberMappingRequests::GetGraphCanvasEntityId); -// } -// -// if (m_graphCanvasNodeId.IsValid()) -// { -// const bool refreshDisplayData = false; -// ResolveWrapperNode(refreshDisplayData); -// -// AZStd::string displayName; -// GraphCanvas::NodeTitleRequestBus::EventResult(displayName, m_graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::GetTitle); -// -// if (!displayName.empty()) -// { -// m_displayName = displayName.c_str(); -// } -// -// GraphCanvas::NodeTitleRequestBus::Event(m_graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::ConfigureIconConfiguration, m_paletteConfiguration); -// -// OnStylesLoaded(); -// -// PopulateInputSlotData(); -// PopulateOutputSlotData(); -// -// SignalDataChanged(); -// } -// } + if (!m_graphCanvasGraphId.IsValid()) + { + GeneralRequestBus::BroadcastResult(m_graphCanvasGraphId + , &GeneralRequests::FindGraphCanvasGraphIdByAssetId, SourceHandle(nullptr, GetAssetId().m_guid, "")); + + if (!EditorGraphNotificationBus::Handler::BusIsConnected()) + { + ScriptCanvas::ScriptCanvasId scriptCanvasId; + GeneralRequestBus::BroadcastResult(scriptCanvasId + , &GeneralRequests::FindScriptCanvasIdByAssetId, SourceHandle(nullptr, GetAssetId().m_guid, "")); + + EditorGraphNotificationBus::Handler::BusConnect(scriptCanvasId); + } + } + + if (m_graphCanvasGraphId.IsValid()) + { + if (!m_graphCanvasNodeId.IsValid()) + { + AssetGraphSceneBus::BroadcastResult(m_scriptCanvasNodeId + , &AssetGraphScene::FindEditorNodeIdByAssetNodeId + , SourceHandle(nullptr, GetAssetId().m_guid, ""), m_scriptCanvasAssetNodeId); + SceneMemberMappingRequestBus::EventResult(m_graphCanvasNodeId, m_scriptCanvasNodeId, &SceneMemberMappingRequests::GetGraphCanvasEntityId); + } + + if (m_graphCanvasNodeId.IsValid()) + { + const bool refreshDisplayData = false; + ResolveWrapperNode(refreshDisplayData); + + AZStd::string displayName; + GraphCanvas::NodeTitleRequestBus::EventResult(displayName, m_graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::GetTitle); + + if (!displayName.empty()) + { + m_displayName = displayName.c_str(); + } + + GraphCanvas::NodeTitleRequestBus::Event(m_graphCanvasNodeId, &GraphCanvas::NodeTitleRequests::ConfigureIconConfiguration, m_paletteConfiguration); + + OnStylesLoaded(); + + PopulateInputSlotData(); + PopulateOutputSlotData(); + + SignalDataChanged(); + } + } } void ExecutionLogTreeItem::PopulateInputSlotData() @@ -805,8 +808,8 @@ namespace ScriptCanvasEditor { if (!m_graphCanvasGraphId.IsValid()) { - // #sc_editor_asset - // GeneralRequestBus::BroadcastResult(m_graphCanvasGraphId, &GeneralRequests::FindGraphCanvasGraphIdByAssetId, m_graphIdentifier.m_assetId); + GeneralRequestBus::BroadcastResult(m_graphCanvasGraphId + , &GeneralRequests::FindGraphCanvasGraphIdByAssetId, SourceHandle(nullptr, m_graphIdentifier.m_assetId.m_guid, "")); } ScrapeInputName(); @@ -828,8 +831,7 @@ namespace ScriptCanvasEditor if (m_graphCanvasGraphId.IsValid() && m_assetInputEndpoint.IsValid()) { AZ::EntityId scriptCanvasNodeId; - // #sc_editor_asset - // AssetGraphSceneBus::BroadcastResult(scriptCanvasNodeId, &AssetGraphScene::FindEditorNodeIdByAssetNodeId, GetAssetId(), m_assetInputEndpoint.GetNodeId()); + AssetGraphSceneBus::BroadcastResult(scriptCanvasNodeId, &AssetGraphScene::FindEditorNodeIdByAssetNodeId, SourceHandle(nullptr, GetAssetId().m_guid, ""), m_assetInputEndpoint.GetNodeId()); GraphCanvas::NodeId graphCanvasNodeId; SceneMemberMappingRequestBus::EventResult(graphCanvasNodeId, scriptCanvasNodeId, &SceneMemberMappingRequests::GetGraphCanvasEntityId); @@ -852,9 +854,9 @@ namespace ScriptCanvasEditor if (m_graphCanvasGraphId.IsValid() && m_assetOutputEndpoint.IsValid()) { AZ::EntityId scriptCanvasNodeId; - // #sc_editor_asset - // AssetGraphSceneBus::BroadcastResult(scriptCanvasNodeId, &AssetGraphScene::FindEditorNodeIdByAssetNodeId, GetAssetId(), m_assetOutputEndpoint.GetNodeId()); - + AssetGraphSceneBus::BroadcastResult(scriptCanvasNodeId, &AssetGraphScene::FindEditorNodeIdByAssetNodeId + , SourceHandle(nullptr, GetAssetId().m_guid, ""), m_assetOutputEndpoint.GetNodeId()); + GraphCanvas::NodeId graphCanvasNodeId; SceneMemberMappingRequestBus::EventResult(graphCanvasNodeId, scriptCanvasNodeId, &SceneMemberMappingRequests::GetGraphCanvasEntityId); diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/LoggingPanel/PivotTree/PivotTreeWidget.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/LoggingPanel/PivotTree/PivotTreeWidget.cpp index d085ebbbcf..b1827d7099 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/LoggingPanel/PivotTree/PivotTreeWidget.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/LoggingPanel/PivotTree/PivotTreeWidget.cpp @@ -405,18 +405,17 @@ namespace ScriptCanvasEditor { sourceIndex = proxyModel->mapToSource(modelIndex); } - // #sc_editor_asset -// PivotTreeItem* pivotTreeItem = static_cast(sourceIndex.internalPointer()); -// -// if (pivotTreeItem) -// { -// PivotTreeGraphItem* graphItem = azrtti_cast(pivotTreeItem); -// -// if (graphItem) -// { -// GeneralRequestBus::Broadcast(&GeneralRequests::OpenScriptCanvasAssetId, graphItem->GetAssetId()); -// } -// } + + if (PivotTreeItem* pivotTreeItem = static_cast(sourceIndex.internalPointer())) + { + if (PivotTreeGraphItem* graphItem = azrtti_cast(pivotTreeItem)) + { + GeneralRequestBus::Broadcast + ( &GeneralRequests::OpenScriptCanvasAssetId + , SourceHandle(nullptr, graphItem->GetAssetId().m_guid, "") + , Tracker::ScriptCanvasFileState::UNMODIFIED); + } + } } #include diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/FunctionNodePaletteTreeItemTypes.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/FunctionNodePaletteTreeItemTypes.cpp index 6473dcbb40..b2db9508b1 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/FunctionNodePaletteTreeItemTypes.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/NodePalette/FunctionNodePaletteTreeItemTypes.cpp @@ -129,8 +129,10 @@ namespace ScriptCanvasEditor { if (row == NodePaletteTreeItem::Column::Customization) { - // #sc_editor_asset - // GeneralRequestBus::Broadcast(&GeneralRequests::OpenScriptCanvasAsset, GetSourceAssetId(), -1); + GeneralRequestBus::Broadcast + ( &GeneralRequests::OpenScriptCanvasAssetId + , SourceHandle(nullptr, GetSourceAssetId().m_guid, "") + , Tracker::ScriptCanvasFileState::UNMODIFIED); } } @@ -138,9 +140,11 @@ namespace ScriptCanvasEditor { if (row != NodePaletteTreeItem::Column::Customization) { - // #sc_editor_asset - // GeneralRequestBus::Broadcast(&GeneralRequests::OpenScriptCanvasAsset, GetSourceAssetId(), -1); - // return true; + GeneralRequestBus::Broadcast + ( &GeneralRequests::OpenScriptCanvasAssetId + , SourceHandle(nullptr, GetSourceAssetId().m_guid, "") + , Tracker::ScriptCanvasFileState::UNMODIFIED); + return true; } return false; diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/StatisticsDialog/ScriptCanvasStatisticsDialog.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/StatisticsDialog/ScriptCanvasStatisticsDialog.cpp index 9538a5732a..4a0905c17c 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/StatisticsDialog/ScriptCanvasStatisticsDialog.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/StatisticsDialog/ScriptCanvasStatisticsDialog.cpp @@ -257,8 +257,10 @@ namespace ScriptCanvasEditor if (treeItem->GetAssetId().IsValid()) { - // #sc_editor_asset - // GeneralRequestBus::Broadcast(&GeneralRequests::OpenScriptCanvasAssetId, treeItem->GetAssetId()); + GeneralRequestBus::Broadcast + ( &GeneralRequests::OpenScriptCanvasAssetId + , SourceHandle(nullptr, treeItem->GetAssetId().m_guid, "") + , Tracker::ScriptCanvasFileState::UNMODIFIED); } } } diff --git a/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp b/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp index f9653031b4..4eb8fb4cca 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp @@ -2673,10 +2673,8 @@ namespace ScriptCanvasEditor } } - void MainWindow::CopyPathToClipboard(int /*index*/) + void MainWindow::CopyPathToClipboard(int index) { - // #sc_editor_asset - /* QVariant tabdata = m_tabBar->tabData(index); if (tabdata.isValid()) @@ -2684,20 +2682,15 @@ namespace ScriptCanvasEditor QClipboard* clipBoard = QGuiApplication::clipboard(); auto assetId = tabdata.value(); - - ScriptCanvasMemoryAsset::pointer memoryAsset; - AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, assetId); - - if (memoryAsset) + if (!assetId.m_assetId.Path().empty()) { - clipBoard->setText(memoryAsset->GetAbsolutePath().c_str()); + clipBoard->setText(assetId.m_assetId.Path().c_str()); } else { clipBoard->setText(m_tabBar->tabText(index)); } } - */ } void MainWindow::OnActiveFileStateChanged()