diff --git a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasFileHandling.cpp b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasFileHandling.cpp index 4af7ff247e..cd8d21543f 100644 --- a/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasFileHandling.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Assets/ScriptCanvasFileHandling.cpp @@ -144,7 +144,7 @@ namespace ScriptCanvasEditor { namespace JSRU = AZ::JsonSerializationUtils; - if (!source) + if (!source.IsValid()) { return AZ::Failure(AZStd::string("no source graph to save")); } diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/GraphTabBar.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/GraphTabBar.cpp index 029d713277..1dfb27ce63 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/GraphTabBar.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/GraphTabBar.cpp @@ -194,7 +194,7 @@ namespace ScriptCanvasEditor if (tabDataVariant.isValid()) { auto tabAssetId = tabDataVariant.value(); - if (tabAssetId.m_assetId == assetId) + if (tabAssetId.m_assetId.AnyEquals(assetId)) { return tabIndex; } @@ -243,7 +243,8 @@ namespace ScriptCanvasEditor if (tabdata.isValid()) { auto tabAssetId = tabdata.value(); - if (tabAssetId.m_assetId && tabAssetId.m_assetId.Get()->GetGraphCanvasGraphId() == graphCanvasGraphId) + if (tabAssetId.m_assetId.IsValid() + && tabAssetId.m_assetId.Get()->GetGraphCanvasGraphId() == graphCanvasGraphId) { return tabAssetId.m_assetId.Get()->GetScriptCanvasId(); } diff --git a/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp b/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp index 46e57ceaf1..2f62bbcdf5 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp @@ -260,7 +260,7 @@ namespace ScriptCanvasEditor activeAssets.push_back(assetSaveData); } } - else if (assetId == focusedAssetId) + else if (assetId.AnyEquals(focusedAssetId)) { focusedAssetId.Clear(); } @@ -822,7 +822,7 @@ namespace ScriptCanvasEditor void MainWindow::SignalActiveSceneChanged(ScriptCanvasEditor::SourceHandle assetId) { AZ::EntityId graphId; - if (assetId) + if (assetId.IsValid()) { EditorGraphRequestBus::EventResult(graphId, assetId.Get()->GetScriptCanvasId(), &EditorGraphRequests::GetGraphCanvasGraphId); } @@ -1251,7 +1251,7 @@ namespace ScriptCanvasEditor AZ::Outcome MainWindow::OpenScriptCanvasAsset(ScriptCanvasEditor::SourceHandle scriptCanvasAssetId, int tabIndex) { - if (scriptCanvasAssetId) + if (scriptCanvasAssetId.IsValid()) { return OpenScriptCanvasAssetImplementation(scriptCanvasAssetId, tabIndex); } @@ -1272,7 +1272,7 @@ namespace ScriptCanvasEditor m_assetCreationRequests.erase(assetId); GeneralAssetNotificationBus::Event(assetId, &GeneralAssetNotifications::OnAssetUnloaded); - if (assetId) + if (assetId.IsValid()) { // Disconnect scene and asset editor buses GraphCanvas::SceneNotificationBus::MultiHandler::BusDisconnect(assetId.Get()->GetScriptCanvasId()); @@ -1314,7 +1314,7 @@ namespace ScriptCanvasEditor OnFileNew(); - bool createdNewAsset = m_activeGraph != previousAssetId; + bool createdNewAsset = !(m_activeGraph.AnyEquals(previousAssetId)); if (createdNewAsset) { @@ -1754,7 +1754,7 @@ namespace ScriptCanvasEditor return false; } - if (m_activeGraph != inMemoryAssetId) + if (!m_activeGraph.AnyEquals(inMemoryAssetId)) { OnChangeActiveGraphTab(inMemoryAssetId); } @@ -2489,7 +2489,7 @@ namespace ScriptCanvasEditor { AZ::EntityId graphId{}; - if (m_activeGraph) + if (m_activeGraph.IsValid()) { EditorGraphRequestBus::EventResult ( graphId, m_activeGraph.Get()->GetScriptCanvasId(), &EditorGraphRequests::GetGraphCanvasGraphId); @@ -2514,7 +2514,7 @@ namespace ScriptCanvasEditor { AZ::EntityId graphId{}; - if (assetId) + if (assetId.IsValid()) { EditorGraphRequestBus::EventResult ( graphId, assetId.Get()->GetScriptCanvasId(), &EditorGraphRequests::GetGraphCanvasGraphId); @@ -2525,7 +2525,7 @@ namespace ScriptCanvasEditor ScriptCanvas::ScriptCanvasId MainWindow::FindScriptCanvasIdByAssetId(const ScriptCanvasEditor::SourceHandle& assetId) const { - return assetId ? assetId.Get()->GetScriptCanvasId() : ScriptCanvas::ScriptCanvasId{}; + return assetId.IsValid() ? assetId.Get()->GetScriptCanvasId() : ScriptCanvas::ScriptCanvasId{}; } ScriptCanvas::ScriptCanvasId MainWindow::GetScriptCanvasId(const GraphCanvas::GraphId& graphCanvasGraphId) const @@ -2568,7 +2568,7 @@ namespace ScriptCanvasEditor if (tabdata.isValid()) { auto tabAssetId = tabdata.value(); - if (tabAssetId.m_assetId == assetId) + if (tabAssetId.m_assetId.AnyEquals(assetId)) { return tabdata; } @@ -2594,14 +2594,14 @@ namespace ScriptCanvasEditor // Disconnect previous asset AZ::EntityId previousScriptCanvasSceneId; - if (previousAsset) + if (previousAsset.IsValid()) { previousScriptCanvasSceneId = previousAsset.Get()->GetScriptCanvasId(); GraphCanvas::SceneNotificationBus::MultiHandler::BusDisconnect(previousScriptCanvasSceneId); } AZ::EntityId nextAssetGraphCanvasId; - if (nextAsset) + if (nextAsset.IsValid()) { // Connect the next asset EditorGraphRequestBus::EventResult(nextAssetGraphCanvasId, nextAsset.Get()->GetScriptCanvasId(), &EditorGraphRequests::GetGraphCanvasGraphId); @@ -2622,9 +2622,7 @@ namespace ScriptCanvasEditor void MainWindow::SetActiveAsset(const ScriptCanvasEditor::SourceHandle& fileAssetId) { - // #sc_editor_asset - - if (m_activeGraph == fileAssetId) + if (m_activeGraph.AnyEquals(fileAssetId)) { return; } @@ -2827,7 +2825,7 @@ namespace ScriptCanvasEditor { auto assetId = tabdata.value(); - if (assetId.m_assetId != m_skipTabOnClose) + if (!assetId.m_assetId.AnyEquals(m_skipTabOnClose)) { break; } @@ -2855,7 +2853,7 @@ namespace ScriptCanvasEditor bool activeSet = false; - if (tabAssetId.m_assetId == m_activeGraph) + if (tabAssetId.m_assetId.AnyEquals(m_activeGraph)) { SetActiveAsset({}); activeSet = true; diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Core.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Core.cpp index 064029eb03..829a25f3d1 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Core.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Core.cpp @@ -229,7 +229,7 @@ namespace ScriptCanvasEditor bool SourceHandle::IsValid() const { - return *this; + return m_data != nullptr; } GraphPtr SourceHandle::Mod() const @@ -237,14 +237,16 @@ namespace ScriptCanvasEditor return m_data ? m_data->ModEditorGraph() : nullptr; } - SourceHandle::operator bool() const + bool SourceHandle::operator==(const SourceHandle& other) const { - return m_data != nullptr; + return m_data.get() == other.m_data.get() + && m_id == other.m_id + && m_path == other.m_path; } - bool SourceHandle::operator!() const + bool SourceHandle::operator!=(const SourceHandle& other) const { - return m_data == nullptr; + return !(*this == other); } const AZStd::string& SourceHandle::Path() const @@ -252,6 +254,11 @@ namespace ScriptCanvasEditor return m_path; } + bool SourceHandle::PathEquals(const SourceHandle& other) const + { + return m_path == other.m_path; + } + AZStd::string SourceHandle::ToString() const { return AZStd::string::format diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Core.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Core.h index 415c181033..8d7dc40866 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Core.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/Core.h @@ -344,12 +344,14 @@ namespace ScriptCanvasEditor GraphPtr Mod() const; - operator bool() const; + bool operator==(const SourceHandle& other) const; - bool operator!() const; + bool operator!=(const SourceHandle& other) const; const AZStd::string& Path() const; + bool PathEquals(const SourceHandle& other) const; + AZStd::string ToString() const; private: