initial scriptcanvas source handle

Signed-off-by: chcurran <82187351+carlitosan@users.noreply.github.com>
This commit is contained in:
chcurran
2021-10-14 09:06:54 -07:00
committed by Chris Burel
parent 6613030fe6
commit 31c627defc
21 changed files with 579 additions and 283 deletions
@@ -135,6 +135,7 @@
#include <Editor/View/Widgets/NodePalette/CreateNodeMimeEvent.h>
#include <Editor/View/Widgets/NodePalette/EBusNodePaletteTreeItemTypes.h>
#include <Editor/View/Windows/Tools/UpgradeTool/UpgradeHelper.h>
#include <ScriptCanvas/Assets/ScriptCanvasFileHandling.h>
#include <Editor/View/Widgets/VariablePanel/SlotTypeSelectorWidget.h>
@@ -235,7 +236,7 @@ namespace ScriptCanvasEditor
Widget::GraphTabBar* tabBar = m_mainWindow->m_tabBar;
AZStd::vector<EditorSettings::EditorWorkspace::WorkspaceAssetSaveData> activeAssets;
AZ::Data::AssetId focusedAssetId = tabBar->FindAssetId(tabBar->currentIndex());
ScriptCanvasEditor::SourceHandle focusedAssetId = tabBar->FindAssetId(tabBar->currentIndex());
if (m_rememberOpenCanvases)
{
@@ -243,13 +244,13 @@ namespace ScriptCanvasEditor
for (int i = 0; i < tabBar->count(); ++i)
{
AZ::Data::AssetId assetId = tabBar->FindAssetId(i);
ScriptCanvasEditor::SourceHandle assetId = tabBar->FindAssetId(i);
const Tracker::ScriptCanvasFileState& fileState = m_mainWindow->GetAssetFileState(assetId);
if (fileState == Tracker::ScriptCanvasFileState::MODIFIED || fileState == Tracker::ScriptCanvasFileState::UNMODIFIED)
{
AZ::Data::AssetId sourceId = GetSourceAssetId(assetId);
ScriptCanvasEditor::SourceHandle sourceId = GetSourceAssetId(assetId);
if (sourceId.IsValid())
{
EditorSettings::EditorWorkspace::WorkspaceAssetSaveData assetSaveData;
@@ -316,7 +317,7 @@ namespace ScriptCanvasEditor
if (m_loadingAssets.empty())
{
m_mainWindow->OnWorkspaceRestoreEnd(AZ::Data::AssetId());
m_mainWindow->OnWorkspaceRestoreEnd(ScriptCanvasEditor::SourceHandle());
}
else
{
@@ -336,7 +337,7 @@ namespace ScriptCanvasEditor
{
if (assetSaveData.m_assetId == m_queuedAssetFocus)
{
m_queuedAssetFocus = AZ::Data::AssetId();
m_queuedAssetFocus = ScriptCanvasEditor::SourceHandle();
}
SignalAssetComplete(asset.GetFileAssetId());
@@ -350,7 +351,7 @@ namespace ScriptCanvasEditor
{
if (assetSaveData.m_assetId == m_queuedAssetFocus)
{
m_queuedAssetFocus = AZ::Data::AssetId();
m_queuedAssetFocus = ScriptCanvasEditor::SourceHandle();
}
SignalAssetComplete(assetSaveData.m_assetId);
@@ -359,14 +360,14 @@ namespace ScriptCanvasEditor
}
else
{
m_mainWindow->OnWorkspaceRestoreEnd(AZ::Data::AssetId());
m_mainWindow->OnWorkspaceRestoreEnd(ScriptCanvasEditor::SourceHandle());
}
}
}
void Workspace::OnAssetReady(const ScriptCanvasMemoryAsset::pointer memoryAsset)
{
const AZ::Data::AssetId& fileAssetId = memoryAsset->GetFileAssetId();
const ScriptCanvasEditor::SourceHandle& fileAssetId = memoryAsset->GetFileAssetId();
if (AssetTrackerNotificationBus::MultiHandler::BusIsConnectedId(fileAssetId))
{
@@ -378,7 +379,7 @@ namespace ScriptCanvasEditor
}
}
void Workspace::SignalAssetComplete(const AZ::Data::AssetId& fileAssetId)
void Workspace::SignalAssetComplete(const ScriptCanvasEditor::SourceHandle& fileAssetId)
{
auto it = AZStd::find(m_loadingAssets.begin(), m_loadingAssets.end(), fileAssetId);
if (it != m_loadingAssets.end())
@@ -394,7 +395,7 @@ namespace ScriptCanvasEditor
}
}
AZ::Data::AssetId Workspace::GetSourceAssetId(const AZ::Data::AssetId& memoryAssetId) const
ScriptCanvasEditor::SourceHandle Workspace::GetSourceAssetId(const ScriptCanvasEditor::SourceHandle& memoryAssetId) const
{
ScriptCanvasMemoryAsset::pointer memoryAsset;
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, memoryAssetId);
@@ -404,7 +405,7 @@ namespace ScriptCanvasEditor
return memoryAsset->GetFileAssetId();
}
return AZ::Data::AssetId();
return ScriptCanvasEditor::SourceHandle();
}
////////////////
@@ -655,9 +656,9 @@ namespace ScriptCanvasEditor
QTimer::singleShot(0, [this]() {
SetDefaultLayout();
if (m_activeAssetId.IsValid())
if (m_activeGraph.IsValid())
{
m_queuedFocusOverride = m_activeAssetId;
m_queuedFocusOverride = m_activeGraph;
}
m_workspace->Restore();
@@ -831,7 +832,7 @@ namespace ScriptCanvasEditor
connect(ui->action_ViewRestoreDefaultLayout, &QAction::triggered, this, &MainWindow::OnRestoreDefaultLayout);
}
void MainWindow::SignalActiveSceneChanged(AZ::Data::AssetId assetId)
void MainWindow::SignalActiveSceneChanged(ScriptCanvasEditor::SourceHandle assetId)
{
ScriptCanvasMemoryAsset::pointer memoryAsset;
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, assetId);
@@ -927,7 +928,7 @@ namespace ScriptCanvasEditor
for (int tabCounter = 0; tabCounter < m_tabBar->count(); ++tabCounter)
{
AZ::Data::AssetId assetId = m_tabBar->FindAssetId(tabCounter);
ScriptCanvasEditor::SourceHandle assetId = m_tabBar->FindAssetId(tabCounter);
auto resultIterator = m_processedClosedAssetIds.insert(assetId);
if (!resultIterator.second)
@@ -950,7 +951,7 @@ namespace ScriptCanvasEditor
if (shouldSaveResults == UnsavedChangesOptions::SAVE)
{
Callbacks::OnSave saveCB = [this](bool isSuccessful, AZ::Data::AssetPtr, AZ::Data::AssetId)
Callbacks::OnSave saveCB = [this](bool isSuccessful, AZ::Data::AssetPtr, ScriptCanvasEditor::SourceHandle)
{
if (isSuccessful)
{
@@ -992,7 +993,7 @@ namespace ScriptCanvasEditor
for (auto trackedAsset : allAssets)
{
const AZ::Data::AssetId& assetId = trackedAsset->GetAsset().GetId();
const ScriptCanvasEditor::SourceHandle& assetId = trackedAsset->GetAsset().GetId();
CloseScriptCanvasAsset(assetId);
}
@@ -1032,7 +1033,7 @@ namespace ScriptCanvasEditor
DequeuePropertyGridUpdate();
UndoRequestBus::Event(GetActiveScriptCanvasId(), &UndoRequests::Undo);
SignalSceneDirty(m_activeAssetId);
SignalSceneDirty(m_activeGraph);
m_propertyGrid->ClearSelection();
GeneralEditorNotificationBus::Event(GetActiveScriptCanvasId(), &GeneralEditorNotifications::OnUndoRedoEnd);
@@ -1044,7 +1045,7 @@ namespace ScriptCanvasEditor
DequeuePropertyGridUpdate();
UndoRequestBus::Event(GetActiveScriptCanvasId(), &UndoRequests::Redo);
SignalSceneDirty(m_activeAssetId);
SignalSceneDirty(m_activeGraph);
m_propertyGrid->ClearSelection();
GeneralEditorNotificationBus::Event(GetActiveScriptCanvasId(), &GeneralEditorNotifications::OnUndoRedoEnd);
@@ -1117,14 +1118,14 @@ namespace ScriptCanvasEditor
{
ScopedUndoBatch scopedUndoBatch("Modify Graph Canvas Scene");
UndoRequestBus::Event(scriptCanvasId, &UndoRequests::AddGraphItemChangeUndo, "Graph Change");
MarkAssetModified(m_activeAssetId);
MarkAssetModified(m_activeGraph);
}
const bool forceTimer = true;
RestartAutoTimerSave(forceTimer);
}
void MainWindow::SignalSceneDirty(AZ::Data::AssetId assetId)
void MainWindow::SignalSceneDirty(ScriptCanvasEditor::SourceHandle assetId)
{
MarkAssetModified(assetId);
}
@@ -1147,7 +1148,7 @@ namespace ScriptCanvasEditor
m_preventUndoStateUpdateCount = 0;
}
void MainWindow::MarkAssetModified(const AZ::Data::AssetId& assetId)
void MainWindow::MarkAssetModified(const ScriptCanvasEditor::SourceHandle& assetId)
{
if (!assetId.IsValid())
{
@@ -1200,7 +1201,7 @@ namespace ScriptCanvasEditor
}
}
AZ::Outcome<int, AZStd::string> MainWindow::OpenScriptCanvasAssetId(const AZ::Data::AssetId& fileAssetId)
AZ::Outcome<int, AZStd::string> MainWindow::OpenScriptCanvasAssetId(const ScriptCanvasEditor::SourceHandle& fileAssetId)
{
if (!fileAssetId.IsValid())
{
@@ -1264,7 +1265,7 @@ namespace ScriptCanvasEditor
AZ::Outcome<int, AZStd::string> MainWindow::OpenScriptCanvasAsset(const ScriptCanvasMemoryAsset& scriptCanvasAsset, int tabIndex /*= -1*/)
{
const AZ::Data::AssetId& fileAssetId = scriptCanvasAsset.GetFileAssetId();
const ScriptCanvasEditor::SourceHandle& fileAssetId = scriptCanvasAsset.GetFileAssetId();
if (!fileAssetId.IsValid())
{
return AZ::Failure(AZStd::string("Unable to open asset with invalid asset id"));
@@ -1337,7 +1338,7 @@ namespace ScriptCanvasEditor
return AZ::Success(outTabIndex);
}
AZ::Outcome<int, AZStd::string> MainWindow::OpenScriptCanvasAsset(AZ::Data::AssetId scriptCanvasAssetId, int tabIndex /*= -1*/)
AZ::Outcome<int, AZStd::string> MainWindow::OpenScriptCanvasAsset(ScriptCanvasEditor::SourceHandle scriptCanvasAssetId, int tabIndex /*= -1*/)
{
ScriptCanvasMemoryAsset::pointer memoryAsset;
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, scriptCanvasAssetId);
@@ -1353,7 +1354,7 @@ namespace ScriptCanvasEditor
}
}
int MainWindow::CreateAssetTab(const AZ::Data::AssetId& assetId, int tabIndex)
int MainWindow::CreateAssetTab(const ScriptCanvasEditor::SourceHandle& assetId, int tabIndex)
{
return m_tabBar->InsertGraphTab(tabIndex, assetId);
}
@@ -1378,7 +1379,7 @@ namespace ScriptCanvasEditor
return AZ::Success(outTabIndex);
}
void MainWindow::RemoveScriptCanvasAsset(const AZ::Data::AssetId& assetId)
void MainWindow::RemoveScriptCanvasAsset(const ScriptCanvasEditor::SourceHandle& assetId)
{
AssetHelpers::PrintInfo("RemoveScriptCanvasAsset : %s", AssetHelpers::AssetIdToString(assetId).c_str());
@@ -1404,13 +1405,13 @@ namespace ScriptCanvasEditor
QVariant tabdata = m_tabBar->tabData(tabIndex);
if (tabdata.isValid())
{
auto tabAssetId = tabdata.value<AZ::Data::AssetId>();
auto tabAssetId = tabdata.value<ScriptCanvasEditor::SourceHandle>();
SetActiveAsset(tabAssetId);
}
}
int MainWindow::CloseScriptCanvasAsset(const AZ::Data::AssetId& assetId)
int MainWindow::CloseScriptCanvasAsset(const ScriptCanvasEditor::SourceHandle& assetId)
{
int tabIndex = -1;
if (IsTabOpen(assetId, tabIndex))
@@ -1431,26 +1432,26 @@ namespace ScriptCanvasEditor
}
}
AZ::Data::AssetId previousAssetId = m_activeAssetId;
ScriptCanvasEditor::SourceHandle previousAssetId = m_activeGraph;
OnFileNew();
bool createdNewAsset = m_activeAssetId != previousAssetId;
bool createdNewAsset = m_activeGraph != previousAssetId;
if (createdNewAsset)
{
m_assetCreationRequests[m_activeAssetId] = requestingEntityId;
m_assetCreationRequests[m_activeGraph] = requestingEntityId;
}
if (m_isRestoringWorkspace)
{
m_queuedFocusOverride = m_activeAssetId;
m_queuedFocusOverride = m_activeGraph;
}
return createdNewAsset;
}
bool MainWindow::IsScriptCanvasAssetOpen(const AZ::Data::AssetId& assetId) const
bool MainWindow::IsScriptCanvasAssetOpen(const ScriptCanvasEditor::SourceHandle& assetId) const
{
ScriptCanvasMemoryAsset::pointer memoryAsset;
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, assetId);
@@ -1468,7 +1469,7 @@ namespace ScriptCanvasEditor
return m_nodePaletteModel.FindNodePaletteInformation(nodeType);
}
void MainWindow::GetSuggestedFullFilenameToSaveAs(const AZ::Data::AssetId& assetId, AZStd::string& filePath, AZStd::string& fileFilter)
void MainWindow::GetSuggestedFullFilenameToSaveAs(const ScriptCanvasEditor::SourceHandle& assetId, AZStd::string& filePath, AZStd::string& fileFilter)
{
ScriptCanvasMemoryAsset::pointer memoryAsset;
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, assetId);
@@ -1514,6 +1515,21 @@ namespace ScriptCanvasEditor
void MainWindow::OpenFile(const char* fullPath)
{
AZ::Outcome<ScriptCanvasEditor::SourceHandle, AZStd::string> outcome = LoadFromFile(fullPath);
if (!outcome.IsSuccess())
{
m_errorFilePath = fullPath;
AZ_Warning("ScriptCanvas", false, "Unable to open file as a ScriptCanvas graph: %s", fullPath);
}
else
{
m_errorFilePath.clear();
m_activeGraph = outcome.TakeValue();
return;
}
#if defined(EDITOR_ASSET_SUPPORT_ENABLED)
m_errorFilePath = fullPath;
// Let's find the source file on disk
@@ -1566,6 +1582,7 @@ namespace ScriptCanvasEditor
{
QMessageBox::warning(this, "Invalid Source Asset", QString("'%1' is not a valid asset path.").arg(fullPath), QMessageBox::Ok);
}
#endif
}
GraphCanvas::Endpoint MainWindow::HandleProposedConnection(const GraphCanvas::GraphId&, const GraphCanvas::ConnectionId&, const GraphCanvas::Endpoint& endpoint, const GraphCanvas::NodeId& nodeId, const QPoint& screenPoint)
@@ -1676,7 +1693,7 @@ namespace ScriptCanvasEditor
MakeNewFile<ScriptCanvasAsset, ScriptCanvasAssetHandler>();
}
int MainWindow::InsertTabForAsset(AZStd::string_view assetPath, AZ::Data::AssetId assetId, int tabIndex)
int MainWindow::InsertTabForAsset(AZStd::string_view assetPath, ScriptCanvasEditor::SourceHandle assetId, int tabIndex)
{
int outTabIndex = -1;
@@ -1698,7 +1715,7 @@ namespace ScriptCanvasEditor
return outTabIndex;
}
void MainWindow::UpdateUndoCache(AZ::Data::AssetId)
void MainWindow::UpdateUndoCache(ScriptCanvasEditor::SourceHandle)
{
UndoCache* undoCache = nullptr;
UndoRequestBus::EventResult(undoCache, GetActiveScriptCanvasId(), &UndoRequests::GetSceneUndoCache);
@@ -1712,10 +1729,10 @@ namespace ScriptCanvasEditor
{
int outTabIndex = -1;
AZ::Data::AssetId newAssetId;
ScriptCanvasEditor::SourceHandle newAssetId;
auto onAssetCreated = [this, assetPath, tabIndex, &outTabIndex](ScriptCanvasMemoryAsset& asset)
{
const AZ::Data::AssetId& assetId = asset.GetId();
const ScriptCanvasEditor::SourceHandle& assetId = asset.GetId();
outTabIndex = InsertTabForAsset(assetPath, assetId, tabIndex);
@@ -1737,15 +1754,15 @@ namespace ScriptCanvasEditor
bool MainWindow::OnFileSave(const Callbacks::OnSave& saveCB)
{
return SaveAssetImpl(m_activeAssetId, saveCB);
return SaveAssetImpl(m_activeGraph, saveCB);
}
bool MainWindow::OnFileSaveAs(const Callbacks::OnSave& saveCB)
{
return SaveAssetAsImpl(m_activeAssetId, saveCB);
return SaveAssetAsImpl(m_activeGraph, saveCB);
}
bool MainWindow::SaveAssetImpl(const AZ::Data::AssetId& assetId, const Callbacks::OnSave& saveCB)
bool MainWindow::SaveAssetImpl(const ScriptCanvasEditor::SourceHandle& assetId, const Callbacks::OnSave& saveCB)
{
if (!assetId.IsValid())
{
@@ -1772,14 +1789,14 @@ namespace ScriptCanvasEditor
return saveSuccessful;
}
bool MainWindow::SaveAssetAsImpl(const AZ::Data::AssetId& inMemoryAssetId, const Callbacks::OnSave& saveCB)
bool MainWindow::SaveAssetAsImpl(const ScriptCanvasEditor::SourceHandle& inMemoryAssetId, const Callbacks::OnSave& saveCB)
{
if (!inMemoryAssetId.IsValid())
{
return false;
}
if (m_activeAssetId != inMemoryAssetId)
if (m_activeGraph != inMemoryAssetId)
{
OnChangeActiveGraphTab(inMemoryAssetId);
}
@@ -1858,7 +1875,7 @@ namespace ScriptCanvasEditor
return false;
}
void MainWindow::OnSaveCallback(bool saveSuccess, AZ::Data::AssetPtr fileAsset, AZ::Data::AssetId previousFileAssetId)
void MainWindow::OnSaveCallback(bool saveSuccess, AZ::Data::AssetPtr fileAsset, ScriptCanvasEditor::SourceHandle previousFileAssetId)
{
ScriptCanvasMemoryAsset::pointer memoryAsset;
AZStd::string tabName = m_tabBar->tabText(m_tabBar->currentIndex()).toUtf8().data();
@@ -1871,7 +1888,7 @@ namespace ScriptCanvasEditor
AZ_Assert(memoryAsset, "At this point we must have a MemoryAsset");
// Update the editor with the new information about this asset.
const AZ::Data::AssetId& fileAssetId = memoryAsset->GetFileAssetId();
const ScriptCanvasEditor::SourceHandle& fileAssetId = memoryAsset->GetFileAssetId();
saveTabIndex = m_tabBar->FindTab(fileAssetId);
@@ -1879,7 +1896,7 @@ namespace ScriptCanvasEditor
if (saveTabIndex != m_tabBar->currentIndex())
{
// Invalidate the file asset id so we don't delete trigger the asset flow.
m_tabBar->setTabData(saveTabIndex, QVariant::fromValue(AZ::Data::AssetId()));
m_tabBar->setTabData(saveTabIndex, QVariant::fromValue(ScriptCanvasEditor::SourceHandle()));
m_tabBar->CloseTab(saveTabIndex);
saveTabIndex = -1;
@@ -1935,12 +1952,12 @@ namespace ScriptCanvasEditor
}
// Soft switch the asset id here. We'll do a double scene switch down below to actually switch the active assetid
m_activeAssetId = fileAssetId;
m_activeGraph = fileAssetId;
}
else
{
// Use the previous memory asset to find what we had setup as our display
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, m_activeAssetId);
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, m_activeGraph);
// Drop off our file modifier status for our display name when we fail to save.
if (tabName.at(tabName.size() -1) == '*')
@@ -1956,9 +1973,9 @@ namespace ScriptCanvasEditor
else
{
// Something weird happens with our saving. Where we are relying on these scene changes being called.
AZ::Data::AssetId previousAssetId = m_activeAssetId;
ScriptCanvasEditor::SourceHandle previousAssetId = m_activeGraph;
OnChangeActiveGraphTab(AZ::Data::AssetId());
OnChangeActiveGraphTab(ScriptCanvasEditor::SourceHandle());
OnChangeActiveGraphTab(previousAssetId);
}
@@ -1984,17 +2001,17 @@ namespace ScriptCanvasEditor
UnblockCloseRequests();
}
bool MainWindow::ActivateAndSaveAsset(const AZ::Data::AssetId& unsavedAssetId, const Callbacks::OnSave& saveCB)
bool MainWindow::ActivateAndSaveAsset(const ScriptCanvasEditor::SourceHandle& unsavedAssetId, const Callbacks::OnSave& saveCB)
{
SetActiveAsset(unsavedAssetId);
return OnFileSave(saveCB);
}
void MainWindow::SaveAsset(AZ::Data::AssetId assetId, const Callbacks::OnSave& onSave)
void MainWindow::SaveAsset(ScriptCanvasEditor::SourceHandle assetId, const Callbacks::OnSave& onSave)
{
PrepareAssetForSave(assetId);
auto onSaveCallback = [this, onSave](bool saveSuccess, AZ::Data::AssetPtr asset, AZ::Data::AssetId previousAssetId)
auto onSaveCallback = [this, onSave](bool saveSuccess, AZ::Data::AssetPtr asset, ScriptCanvasEditor::SourceHandle previousAssetId)
{
OnSaveCallback(saveSuccess, asset, previousAssetId);
if (onSave)
@@ -2007,7 +2024,7 @@ namespace ScriptCanvasEditor
UpdateSaveState();
ScriptCanvasMemoryAsset::pointer memoryAsset;
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, m_activeAssetId);
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, m_activeGraph);
// Disable the current view if we are saving.
if (memoryAsset)
@@ -2018,11 +2035,11 @@ namespace ScriptCanvasEditor
BlockCloseRequests();
}
void MainWindow::SaveNewAsset(AZStd::string_view path, AZ::Data::AssetId inMemoryAssetId, const Callbacks::OnSave& onSave)
void MainWindow::SaveNewAsset(AZStd::string_view path, ScriptCanvasEditor::SourceHandle inMemoryAssetId, const Callbacks::OnSave& onSave)
{
PrepareAssetForSave(inMemoryAssetId);
auto onSaveCallback = [this, onSave](bool saveSuccess, AZ::Data::AssetPtr asset, AZ::Data::AssetId previousAssetId)
auto onSaveCallback = [this, onSave](bool saveSuccess, AZ::Data::AssetPtr asset, ScriptCanvasEditor::SourceHandle previousAssetId)
{
OnSaveCallback(saveSuccess, asset, previousAssetId);
if (onSave)
@@ -2052,7 +2069,7 @@ namespace ScriptCanvasEditor
EBUS_EVENT_RESULT(serializeContext, AZ::ComponentApplicationBus, GetSerializeContext);
AZ_Assert(serializeContext, "Failed to acquire application serialize context.");
AZ::Data::AssetId openId = ReadRecentAssetId();
ScriptCanvasEditor::SourceHandle openId = ReadRecentAssetId();
AZStd::string assetRoot;
{
@@ -2456,7 +2473,7 @@ namespace ScriptCanvasEditor
void MainWindow::UpdateWorkspaceStatus(const ScriptCanvasMemoryAsset& memoryAsset)
{
AZ::Data::AssetId fileAssetId = memoryAsset.GetFileAssetId();
ScriptCanvasEditor::SourceHandle fileAssetId = memoryAsset.GetFileAssetId();
size_t eraseCount = m_loadingAssets.erase(fileAssetId);
@@ -2519,7 +2536,7 @@ namespace ScriptCanvasEditor
{
if (m_allowAutoSave)
{
const Tracker::ScriptCanvasFileState& fileState = GetAssetFileState(m_activeAssetId);
const Tracker::ScriptCanvasFileState& fileState = GetAssetFileState(m_activeGraph);
if (fileState != Tracker::ScriptCanvasFileState::INVALID && fileState != Tracker::ScriptCanvasFileState::NEW)
{
OnFileSaveCaller();
@@ -2528,7 +2545,7 @@ namespace ScriptCanvasEditor
}
//! GeneralRequestBus
void MainWindow::OnChangeActiveGraphTab(AZ::Data::AssetId assetId)
void MainWindow::OnChangeActiveGraphTab(ScriptCanvasEditor::SourceHandle assetId)
{
SetActiveAsset(assetId);
}
@@ -2536,14 +2553,14 @@ namespace ScriptCanvasEditor
AZ::EntityId MainWindow::GetActiveGraphCanvasGraphId() const
{
AZ::EntityId graphId;
AssetTrackerRequestBus::BroadcastResult(graphId, &AssetTrackerRequests::GetGraphId, m_activeAssetId);
AssetTrackerRequestBus::BroadcastResult(graphId, &AssetTrackerRequests::GetGraphId, m_activeGraph);
return graphId;
}
ScriptCanvas::ScriptCanvasId MainWindow::GetActiveScriptCanvasId() const
{
ScriptCanvas::ScriptCanvasId sceneId;
AssetTrackerRequestBus::BroadcastResult(sceneId, &AssetTrackerRequests::GetScriptCanvasId, m_activeAssetId);
AssetTrackerRequestBus::BroadcastResult(sceneId, &AssetTrackerRequests::GetScriptCanvasId, m_activeGraph);
return sceneId;
}
@@ -2555,14 +2572,14 @@ namespace ScriptCanvasEditor
return graphCanvasId;
}
GraphCanvas::GraphId MainWindow::FindGraphCanvasGraphIdByAssetId(const AZ::Data::AssetId& assetId) const
GraphCanvas::GraphId MainWindow::FindGraphCanvasGraphIdByAssetId(const ScriptCanvasEditor::SourceHandle& assetId) const
{
AZ::EntityId graphId;
AssetTrackerRequestBus::BroadcastResult(graphId, &AssetTrackerRequests::GetGraphId, assetId);
return graphId;
}
ScriptCanvas::ScriptCanvasId MainWindow::FindScriptCanvasIdByAssetId(const AZ::Data::AssetId& assetId) const
ScriptCanvas::ScriptCanvasId MainWindow::FindScriptCanvasIdByAssetId(const ScriptCanvasEditor::SourceHandle& assetId) const
{
ScriptCanvas::ScriptCanvasId scriptCanvasId;
AssetTrackerRequestBus::BroadcastResult(scriptCanvasId, &AssetTrackerRequests::GetScriptCanvasId, assetId);
@@ -2602,14 +2619,14 @@ namespace ScriptCanvasEditor
return isActive;
}
QVariant MainWindow::GetTabData(const AZ::Data::AssetId& assetId)
QVariant MainWindow::GetTabData(const ScriptCanvasEditor::SourceHandle& assetId)
{
for (int tabIndex = 0; tabIndex < m_tabBar->count(); ++tabIndex)
{
QVariant tabdata = m_tabBar->tabData(tabIndex);
if (tabdata.isValid())
{
auto tabAssetId = tabdata.value<AZ::Data::AssetId>();
auto tabAssetId = tabdata.value<ScriptCanvasEditor::SourceHandle>();
if (tabAssetId == assetId)
{
return tabdata;
@@ -2619,7 +2636,7 @@ namespace ScriptCanvasEditor
return QVariant();
}
bool MainWindow::IsTabOpen(const AZ::Data::AssetId& fileAssetId, int& outTabIndex) const
bool MainWindow::IsTabOpen(const ScriptCanvasEditor::SourceHandle& fileAssetId, int& outTabIndex) const
{
int tabIndex = m_tabBar->FindTab(fileAssetId);
if (-1 != tabIndex)
@@ -2630,7 +2647,7 @@ namespace ScriptCanvasEditor
return false;
}
void MainWindow::ReconnectSceneBuses(AZ::Data::AssetId previousAssetId, AZ::Data::AssetId nextAssetId)
void MainWindow::ReconnectSceneBuses(ScriptCanvasEditor::SourceHandle previousAssetId, ScriptCanvasEditor::SourceHandle nextAssetId)
{
ScriptCanvasMemoryAsset::pointer previousAsset;
AssetTrackerRequestBus::BroadcastResult(previousAsset, &AssetTrackerRequests::GetAsset, previousAssetId);
@@ -2666,14 +2683,14 @@ namespace ScriptCanvasEditor
}
void MainWindow::SetActiveAsset(const AZ::Data::AssetId& fileAssetId)
void MainWindow::SetActiveAsset(const ScriptCanvasEditor::SourceHandle& fileAssetId)
{
if (m_activeAssetId == fileAssetId)
if (m_activeGraph == fileAssetId)
{
return;
}
AssetHelpers::PrintInfo("SetActiveAsset : from: %s to %s", AssetHelpers::AssetIdToString(m_activeAssetId).c_str(), AssetHelpers::AssetIdToString(fileAssetId).c_str());
AssetHelpers::PrintInfo("SetActiveAsset : from: %s to %s", AssetHelpers::AssetIdToString(m_activeGraph).c_str(), AssetHelpers::AssetIdToString(fileAssetId).c_str());
if (fileAssetId.IsValid())
{
@@ -2688,10 +2705,10 @@ namespace ScriptCanvasEditor
}
}
if (m_activeAssetId.IsValid())
if (m_activeGraph.IsValid())
{
ScriptCanvasMemoryAsset::pointer memoryAsset;
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, m_activeAssetId);
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, m_activeGraph);
// If we are saving the asset, the Id may have changed from the in-memory to the file asset Id, in that case,
// there's no need to hide the view or remove the widget
@@ -2704,23 +2721,23 @@ namespace ScriptCanvasEditor
if (fileAssetId.IsValid())
{
AZ::Data::AssetId previousAssetId = m_activeAssetId;
ScriptCanvasEditor::SourceHandle previousAssetId = m_activeGraph;
m_activeAssetId = fileAssetId;
m_activeGraph = fileAssetId;
RefreshActiveAsset();
ReconnectSceneBuses(previousAssetId, m_activeAssetId);
ReconnectSceneBuses(previousAssetId, m_activeGraph);
}
else
{
AZ::Data::AssetId previousAssetId = m_activeAssetId;
ScriptCanvasEditor::SourceHandle previousAssetId = m_activeGraph;
m_activeAssetId.SetInvalid();
m_activeGraph.SetInvalid();
m_emptyCanvas->show();
ReconnectSceneBuses(previousAssetId, m_activeAssetId);
ReconnectSceneBuses(previousAssetId, m_activeGraph);
SignalActiveSceneChanged(AZ::Data::AssetId());
SignalActiveSceneChanged(ScriptCanvasEditor::SourceHandle());
}
UpdateUndoCache(fileAssetId);
@@ -2730,12 +2747,12 @@ namespace ScriptCanvasEditor
void MainWindow::RefreshActiveAsset()
{
if (m_activeAssetId.IsValid())
if (m_activeGraph.IsValid())
{
AssetHelpers::PrintInfo("RefreshActiveAsset : m_activeAssetId (%s)", AssetHelpers::AssetIdToString(m_activeAssetId).c_str());
AssetHelpers::PrintInfo("RefreshActiveAsset : m_activeGraph (%s)", AssetHelpers::AssetIdToString(m_activeGraph).c_str());
ScriptCanvasMemoryAsset::pointer memoryAsset;
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, m_activeAssetId);
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, m_activeGraph);
if (memoryAsset)
{
@@ -2754,7 +2771,7 @@ namespace ScriptCanvasEditor
AZ_Assert(view, "Asset should have a view");
if (view)
{
AssetHelpers::PrintInfo("RefreshActiveAsset : m_activeAssetId (%s)", AssetHelpers::AssetIdToString(m_activeAssetId).c_str());
AssetHelpers::PrintInfo("RefreshActiveAsset : m_activeGraph (%s)", AssetHelpers::AssetIdToString(m_activeGraph).c_str());
view->ShowScene(sceneEntityId);
m_layout->addWidget(view);
@@ -2763,7 +2780,7 @@ namespace ScriptCanvasEditor
m_emptyCanvas->hide();
}
SignalActiveSceneChanged(m_activeAssetId);
SignalActiveSceneChanged(m_activeGraph);
}
}
else
@@ -2794,7 +2811,7 @@ namespace ScriptCanvasEditor
QVariant tabdata = m_tabBar->tabData(index);
if (tabdata.isValid())
{
auto fileAssetId = tabdata.value<AZ::Data::AssetId>();
auto fileAssetId = tabdata.value<ScriptCanvasEditor::SourceHandle>();
Tracker::ScriptCanvasFileState fileState;
AssetTrackerRequestBus::BroadcastResult(fileState, &AssetTrackerRequests::GetFileState, fileAssetId);
@@ -2821,7 +2838,7 @@ namespace ScriptCanvasEditor
if (saveDialogResults == UnsavedChangesOptions::SAVE)
{
auto saveCB = [this](bool isSuccessful, AZ::Data::AssetPtr asset, AZ::Data::AssetId)
auto saveCB = [this](bool isSuccessful, AZ::Data::AssetPtr asset, ScriptCanvasEditor::SourceHandle)
{
if (isSuccessful)
{
@@ -2862,7 +2879,7 @@ namespace ScriptCanvasEditor
QVariant tabdata = m_tabBar->tabData(index);
if (tabdata.isValid())
{
auto assetId = tabdata.value<AZ::Data::AssetId>();
auto assetId = tabdata.value<ScriptCanvasEditor::SourceHandle>();
SaveAssetImpl(assetId, nullptr);
}
@@ -2881,7 +2898,7 @@ namespace ScriptCanvasEditor
QVariant tabdata = m_tabBar->tabData(index);
if (tabdata.isValid())
{
auto assetId = tabdata.value<AZ::Data::AssetId>();
auto assetId = tabdata.value<ScriptCanvasEditor::SourceHandle>();
m_isClosingTabs = true;
m_skipTabOnClose = assetId;
@@ -2897,7 +2914,7 @@ namespace ScriptCanvasEditor
{
QClipboard* clipBoard = QGuiApplication::clipboard();
auto assetId = tabdata.value<AZ::Data::AssetId>();
auto assetId = tabdata.value<ScriptCanvasEditor::SourceHandle>();
ScriptCanvasMemoryAsset::pointer memoryAsset;
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, assetId);
@@ -2938,7 +2955,7 @@ namespace ScriptCanvasEditor
QVariant tabdata = m_tabBar->tabData(tab);
if (tabdata.isValid())
{
auto assetId = tabdata.value<AZ::Data::AssetId>();
auto assetId = tabdata.value<ScriptCanvasEditor::SourceHandle>();
if (assetId != m_skipTabOnClose)
{
@@ -2958,9 +2975,9 @@ namespace ScriptCanvasEditor
QVariant tabdata = m_tabBar->tabData(index);
if (tabdata.isValid())
{
auto tabAssetId = tabdata.value<AZ::Data::AssetId>();
auto tabAssetId = tabdata.value<ScriptCanvasEditor::SourceHandle>();
if (tabAssetId == m_activeAssetId)
if (tabAssetId == m_activeGraph)
{
SetActiveAsset({});
}
@@ -3164,7 +3181,7 @@ namespace ScriptCanvasEditor
bool hasCopiableSelection = false;
bool hasSelection = false;
if (m_activeAssetId.IsValid())
if (m_activeGraph.IsValid())
{
if (graphCanvasGraphId.IsValid())
{
@@ -3552,7 +3569,7 @@ namespace ScriptCanvasEditor
m_isRestoringWorkspace = true;
}
void MainWindow::OnWorkspaceRestoreEnd(AZ::Data::AssetId lastFocusAsset)
void MainWindow::OnWorkspaceRestoreEnd(ScriptCanvasEditor::SourceHandle lastFocusAsset)
{
if (m_isRestoringWorkspace)
{
@@ -3568,7 +3585,7 @@ namespace ScriptCanvasEditor
SetActiveAsset(lastFocusAsset);
}
if (!m_activeAssetId.IsValid())
if (!m_activeGraph.IsValid())
{
if (m_tabBar->count() > 0)
{
@@ -3591,11 +3608,11 @@ namespace ScriptCanvasEditor
void MainWindow::UpdateAssignToSelectionState()
{
bool buttonEnabled = m_activeAssetId.IsValid();
bool buttonEnabled = m_activeGraph.IsValid();
if (buttonEnabled)
{
const Tracker::ScriptCanvasFileState& fileState = GetAssetFileState(m_activeAssetId);
const Tracker::ScriptCanvasFileState& fileState = GetAssetFileState(m_activeGraph);
if (fileState == Tracker::ScriptCanvasFileState::INVALID || fileState == Tracker::ScriptCanvasFileState::NEW || fileState == Tracker::ScriptCanvasFileState::SOURCE_REMOVED)
{
buttonEnabled = false;
@@ -3624,18 +3641,18 @@ namespace ScriptCanvasEditor
void MainWindow::UpdateSaveState()
{
bool enabled = m_activeAssetId.IsValid();
bool enabled = m_activeGraph.IsValid();
bool isSaving = false;
bool hasModifications = false;
if (enabled)
{
Tracker::ScriptCanvasFileState fileState = GetAssetFileState(m_activeAssetId);
Tracker::ScriptCanvasFileState fileState = GetAssetFileState(m_activeGraph);
hasModifications = ( fileState == Tracker::ScriptCanvasFileState::MODIFIED
|| fileState == Tracker::ScriptCanvasFileState::NEW
|| fileState == Tracker::ScriptCanvasFileState::SOURCE_REMOVED);
AssetTrackerRequestBus::BroadcastResult(isSaving, &AssetTrackerRequests::IsSaving, m_activeAssetId);
AssetTrackerRequestBus::BroadcastResult(isSaving, &AssetTrackerRequests::IsSaving, m_activeGraph);
}
ui->action_Save->setEnabled(enabled && !isSaving && hasModifications);
@@ -3837,14 +3854,14 @@ namespace ScriptCanvasEditor
return findChild<QObject*>(elementName);
}
AZ::EntityId MainWindow::FindEditorNodeIdByAssetNodeId(const AZ::Data::AssetId& assetId, AZ::EntityId assetNodeId) const
AZ::EntityId MainWindow::FindEditorNodeIdByAssetNodeId(const ScriptCanvasEditor::SourceHandle& assetId, AZ::EntityId assetNodeId) const
{
AZ::EntityId editorEntityId;
AssetTrackerRequestBus::BroadcastResult(editorEntityId, &AssetTrackerRequests::GetEditorEntityIdFromSceneEntityId, assetId, assetNodeId);
return editorEntityId;
}
AZ::EntityId MainWindow::FindAssetNodeIdByEditorNodeId(const AZ::Data::AssetId& assetId, AZ::EntityId editorNodeId) const
AZ::EntityId MainWindow::FindAssetNodeIdByEditorNodeId(const ScriptCanvasEditor::SourceHandle& assetId, AZ::EntityId editorNodeId) const
{
AZ::EntityId sceneEntityId;
AssetTrackerRequestBus::BroadcastResult(sceneEntityId, &AssetTrackerRequests::GetSceneEntityIdFromEditorEntityId, assetId, editorNodeId);
@@ -3961,7 +3978,7 @@ namespace ScriptCanvasEditor
OnFileNew();
if (m_activeAssetId.IsValid())
if (m_activeGraph.IsValid())
{
graphId = GetActiveGraphCanvasGraphId();
}
@@ -4265,10 +4282,10 @@ namespace ScriptCanvasEditor
void MainWindow::PrepareActiveAssetForSave()
{
PrepareAssetForSave(m_activeAssetId);
PrepareAssetForSave(m_activeGraph);
}
void MainWindow::PrepareAssetForSave(const AZ::Data::AssetId& assetId)
void MainWindow::PrepareAssetForSave(const ScriptCanvasEditor::SourceHandle& assetId)
{
ScriptCanvasMemoryAsset::pointer memoryAsset;
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, assetId);
@@ -4337,7 +4354,7 @@ namespace ScriptCanvasEditor
void MainWindow::OnAssignToSelectedEntities()
{
Tracker::ScriptCanvasFileState fileState;
AssetTrackerRequestBus::BroadcastResult(fileState, &AssetTrackerRequests::GetFileState, m_activeAssetId);
AssetTrackerRequestBus::BroadcastResult(fileState, &AssetTrackerRequests::GetFileState, m_activeGraph);
bool isDocumentOpen = false;
AzToolsFramework::EditorRequests::Bus::BroadcastResult(isDocumentOpen, &AzToolsFramework::EditorRequests::IsLevelDocumentOpen);
@@ -4398,7 +4415,7 @@ namespace ScriptCanvasEditor
void MainWindow::OnAssignToEntity(const AZ::EntityId& entityId)
{
Tracker::ScriptCanvasFileState fileState = GetAssetFileState(m_activeAssetId);
Tracker::ScriptCanvasFileState fileState = GetAssetFileState(m_activeGraph);
if (fileState == Tracker::ScriptCanvasFileState::MODIFIED
|| fileState == Tracker::ScriptCanvasFileState::UNMODIFIED)
@@ -4407,7 +4424,7 @@ namespace ScriptCanvasEditor
}
}
ScriptCanvasEditor::Tracker::ScriptCanvasFileState MainWindow::GetAssetFileState(AZ::Data::AssetId assetId) const
ScriptCanvasEditor::Tracker::ScriptCanvasFileState MainWindow::GetAssetFileState(ScriptCanvasEditor::SourceHandle assetId) const
{
Tracker::ScriptCanvasFileState fileState = Tracker::ScriptCanvasFileState::INVALID;
AssetTrackerRequestBus::BroadcastResult(fileState, &AssetTrackerRequests::GetFileState, assetId);
@@ -4460,7 +4477,7 @@ namespace ScriptCanvasEditor
if (usableRequestBus)
{
ScriptCanvasMemoryAsset::pointer memoryAsset;
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, m_activeAssetId);
AssetTrackerRequestBus::BroadcastResult(memoryAsset, &AssetTrackerRequests::GetAsset, m_activeGraph);
if (memoryAsset)
{