diff --git a/Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Modifier.cpp b/Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Modifier.cpp index a5515248e5..14b292e489 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Modifier.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Modifier.cpp @@ -31,14 +31,12 @@ namespace ScriptCanvasEditor ModelNotificationsBus::Broadcast(&ModelNotificationsTraits::OnUpgradeBegin, modification, m_assets); AZ::SystemTickBus::Handler::BusConnect(); AzFramework::AssetSystemInfoBus::Handler::BusConnect(); - AzFramework::AssetSystemInfoBus::Handler::BusConnect(); m_result.asset = m_assets[GetCurrentIndex()]; } Modifier::~Modifier() { AzFramework::AssetSystemInfoBus::Handler::BusDisconnect(); - AzFramework::AssetSystemInfoBus::Handler::BusDisconnect(); } bool Modifier::AllDependenciesCleared(const AZStd::unordered_set& dependencies) const @@ -73,58 +71,6 @@ namespace ScriptCanvasEditor return false; } - AZStd::sys_time_t Modifier::CalculateRemainingWaitTime(const AZStd::unordered_set& dependencies) const - { - auto maxSeconds = AZStd::chrono::seconds(dependencies.size() * m_config.perDependencyWaitSecondsMax); - auto waitedSeconds = AZStd::chrono::seconds(AZStd::chrono::system_clock::now() - m_waitTimeStamp); - return (maxSeconds - waitedSeconds).count(); - } - - void Modifier::SourceFileChanged(AZStd::string relativePath, [[maybe_unused]] AZStd::string scanFolder, [[maybe_unused]] AZ::Uuid fileAssetId) - { - AZ_TracePrintf("SC", "received SourceFileChanged: %s", relativePath.c_str()); - VE_LOG("received SourceFileChanged: %s", relativePath.c_str()); - } - - void Modifier::SourceFileFailed(AZStd::string relativePath, [[maybe_unused]] AZStd::string scanFolder, [[maybe_unused]] AZ::Uuid fileAssetId) - { - AZ_TracePrintf("SC", "received SourceFileFailed: %s", relativePath.c_str()); - VE_LOG("received SourceFileFailed: %s", relativePath.c_str()); - } - - void Modifier::ProcessNotifications() - { - AZStd::lock_guard lock(m_mutex); - - for (const auto& assetPath : m_successNotifications) - { - VE_LOG("received AssetCompilationSuccess: %s", assetPath.c_str()); - SourceHandle sourceHandle(nullptr, {}, assetPath.c_str()); - CompleteDescriptionInPlace(sourceHandle); - - if (m_attemptedAssets.contains(sourceHandle.Id())) - { - m_assetsCompletedByAP.insert(sourceHandle.Id()); - } - } - - m_successNotifications.clear(); - - for (const auto& assetPath : m_failureNotifications) - { - VE_LOG("received AssetCompilationFailed: %s", assetPath.c_str()); - SourceHandle sourceHandle(nullptr, {}, assetPath.c_str()); - CompleteDescriptionInPlace(sourceHandle); - - if (m_attemptedAssets.contains(sourceHandle.Id())) - { - m_assetsFailedByAP.insert(sourceHandle.Id()); - } - } - - m_failureNotifications.clear(); - } - void Modifier::AssetCompilationSuccess([[maybe_unused]] const AZStd::string& assetPath) { AZStd::lock_guard lock(m_mutex); @@ -137,6 +83,13 @@ namespace ScriptCanvasEditor m_failureNotifications.insert(assetPath); } + AZStd::sys_time_t Modifier::CalculateRemainingWaitTime(const AZStd::unordered_set& dependencies) const + { + auto maxSeconds = AZStd::chrono::seconds(dependencies.size() * m_config.perDependencyWaitSecondsMax); + auto waitedSeconds = AZStd::chrono::seconds(AZStd::chrono::system_clock::now() - m_waitTimeStamp); + return (maxSeconds - waitedSeconds).count(); + } + void Modifier::CheckDependencies() { ModelNotificationsBus::Broadcast(&ModelNotificationsTraits::OnUpgradeModificationBegin, m_config, m_result.asset); @@ -249,6 +202,18 @@ namespace ScriptCanvasEditor return m_results; } + void Modifier::InitializeResult() + { + m_result = {}; + + if (m_assetIndex != m_assets.size()) + { + m_result.asset = m_assets[GetCurrentIndex()]; + CompleteDescriptionInPlace(m_result.asset); + m_attemptedAssets.insert(m_result.asset.Id()); + } + } + void Modifier::LoadAsset() { auto& handle = m_result.asset; @@ -294,18 +259,6 @@ namespace ScriptCanvasEditor } } - void Modifier::InitializeResult() - { - m_result = {}; - - if (m_assetIndex != m_assets.size()) - { - m_result.asset = m_assets[GetCurrentIndex()]; - CompleteDescriptionInPlace(m_result.asset); - m_attemptedAssets.insert(m_result.asset.Id()); - } - } - void Modifier::NextAsset() { ++m_assetIndex; @@ -321,6 +274,72 @@ namespace ScriptCanvasEditor m_modifyState = ModifyState::Idle; } + void Modifier::OnFileSaveComplete(const FileSaveResult& result) + { + if (!result.tempFileRemovalError.empty()) + { + VE_LOG + ("Temporary file not removed for %s: %s" + , m_result.asset.Path().c_str() + , result.tempFileRemovalError.c_str()); + } + + AZStd::lock_guard lock(m_mutex); + m_modifyState = ModifyState::ReportResult; + m_fileSaver.reset(); + m_fileSaveResult = result; + } + + void Modifier::OnSystemTick() + { + switch (m_state) + { + case State::GatheringDependencies: + TickGatherDependencies(); + break; + + case State::ModifyingGraphs: + TickUpdateGraph(); + break; + } + + AZ::Data::AssetManager::Instance().DispatchEvents(); + AZ::SystemTickBus::ExecuteQueuedEvents(); + } + + void Modifier::ProcessNotifications() + { + AZStd::lock_guard lock(m_mutex); + + for (const auto& assetPath : m_successNotifications) + { + VE_LOG("received AssetCompilationSuccess: %s", assetPath.c_str()); + SourceHandle sourceHandle(nullptr, {}, assetPath.c_str()); + CompleteDescriptionInPlace(sourceHandle); + + if (m_attemptedAssets.contains(sourceHandle.Id())) + { + m_assetsCompletedByAP.insert(sourceHandle.Id()); + } + } + + m_successNotifications.clear(); + + for (const auto& assetPath : m_failureNotifications) + { + VE_LOG("received AssetCompilationFailed: %s", assetPath.c_str()); + SourceHandle sourceHandle(nullptr, {}, assetPath.c_str()); + CompleteDescriptionInPlace(sourceHandle); + + if (m_attemptedAssets.contains(sourceHandle.Id())) + { + m_assetsFailedByAP.insert(sourceHandle.Id()); + } + } + + m_failureNotifications.clear(); + } + void Modifier::ReleaseCurrentAsset() { m_result.asset = m_result.asset.Describe(); @@ -360,39 +379,6 @@ namespace ScriptCanvasEditor } } - void Modifier::OnFileSaveComplete(const FileSaveResult& result) - { - if (!result.tempFileRemovalError.empty()) - { - VE_LOG - ( "Temporary file not removed for %s: %s" - , m_result.asset.Path().c_str() - , result.tempFileRemovalError.c_str()); - } - - AZStd::lock_guard lock(m_mutex); - m_modifyState = ModifyState::ReportResult; - m_fileSaver.reset(); - m_fileSaveResult = result; - } - - void Modifier::OnSystemTick() - { - switch (m_state) - { - case State::GatheringDependencies: - TickGatherDependencies(); - break; - - case State::ModifyingGraphs: - TickUpdateGraph(); - break; - } - - AZ::Data::AssetManager::Instance().DispatchEvents(); - AZ::SystemTickBus::ExecuteQueuedEvents(); - } - void Modifier::SaveModifiedGraph(const ModificationResult& result) { m_modifyState = ModifyState::Saving; diff --git a/Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Modifier.h b/Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Modifier.h index 4e0718f6a1..699287dd48 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Modifier.h +++ b/Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Modifier.h @@ -14,9 +14,6 @@ #include #include -// probably not needed if using the asset system bus -#include - namespace ScriptCanvasEditor { namespace VersionExplorer @@ -24,7 +21,6 @@ namespace ScriptCanvasEditor class Modifier final : public AZ::SystemTickBus::Handler , public ModificationNotificationsBus::Handler - , public AzToolsFramework::AssetSystemBus::Handler , public AzFramework::AssetSystemInfoBus::Handler { public: @@ -86,12 +82,13 @@ namespace ScriptCanvasEditor // dependency indices by asset info index (only exist if graphs have them) AZStd::unordered_map> m_dependencies; AZStd::unordered_map m_assetInfoIndexById; - AZStd::vector m_failures; ModifyConfiguration m_config; ModificationResult m_result; ModificationResults m_results; AZStd::unique_ptr m_fileSaver; FileSaveResult m_fileSaveResult; + // m_attemptedAssets is assets attempted to be processed by modification, as opposed to + // those processed by the AP as a result of one of their dependencies being processed. AZStd::unordered_set m_attemptedAssets; AZStd::unordered_set m_assetsCompletedByAP; AZStd::unordered_set m_assetsFailedByAP; @@ -102,6 +99,8 @@ namespace ScriptCanvasEditor bool AllDependenciesCleared(const AZStd::unordered_set& dependencies) const; bool AnyDependenciesFailed(const AZStd::unordered_set& dependencies) const; + void AssetCompilationSuccess(const AZStd::string& assetPath) override; + void AssetCompilationFailed(const AZStd::string& assetPath) override; AZStd::sys_time_t CalculateRemainingWaitTime(const AZStd::unordered_set& dependencies) const; void CheckDependencies(); void GatherDependencies(); @@ -110,27 +109,19 @@ namespace ScriptCanvasEditor AZStd::unordered_set& GetOrCreateDependencyIndexSet(); void InitializeResult(); void LoadAsset(); + void ModificationComplete(const ModificationResult& result) override; void ModifyCurrentAsset(); void NextAsset(); void NextModification(); - void ModificationComplete(const ModificationResult& result) override; + void OnFileSaveComplete(const FileSaveResult& result); + void OnSystemTick() override; + void ProcessNotifications(); void ReleaseCurrentAsset(); void ReportModificationError(AZStd::string_view report); void ReportModificationSuccess(); void ReportSaveResult(); void SaveModifiedGraph(const ModificationResult& result); void SortGraphsByDependencies(); - - - /// use all this to track the success of dependencies - void SourceFileChanged(AZStd::string relativePath, AZStd::string scanFolder, AZ::Uuid fileAssetId) override; - void SourceFileFailed(AZStd::string relativePath, AZStd::string scanFolder, AZ::Uuid fileAssetId) override; - void AssetCompilationSuccess(const AZStd::string& assetPath) override; - void AssetCompilationFailed(const AZStd::string& assetPath) override; - void ProcessNotifications(); - - void OnFileSaveComplete(const FileSaveResult& result); - void OnSystemTick() override; void TickGatherDependencies(); void TickUpdateGraph(); void WaitForDependencies(); diff --git a/Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Scanner.cpp b/Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Scanner.cpp index 061025faf5..816ded8a7b 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Scanner.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Scanner.cpp @@ -81,8 +81,6 @@ namespace ScriptCanvasEditor void Scanner::FilterAsset(SourceHandle asset) { - AZStd::string name = asset.Path().c_str(); - if (m_config.filter && m_config.filter(asset) == ScanConfiguration::Filter::Exclude) { VE_LOG("Scanner: Excluded: %s ", ModCurrentAsset().Path().c_str());