Merge pull request #6294 from aws-lumberyard-dev/carlitosan-sc-save-crash-dialog

Fix dependency static initialization and error message
This commit is contained in:
carlitosan
2021-12-09 11:44:42 -08:00
committed by GitHub
7 changed files with 32 additions and 20 deletions
@@ -431,16 +431,6 @@ namespace ScriptCanvasEditor
AzToolsFramework::ToolsApplicationNotificationBus::Broadcast(&AzToolsFramework::ToolsApplicationEvents::InvalidatePropertyDisplay, AzToolsFramework::Refresh_EntireTree_NewContent);
}
void EditorScriptCanvasComponent::OnStartPlayInEditor()
{
ScriptCanvas::Execution::PerformanceStatisticsEBus::Broadcast(&ScriptCanvas::Execution::PerformanceStatisticsBus::ClearSnaphotStatistics);
}
void EditorScriptCanvasComponent::OnStopPlayInEditor()
{
AZ::ScriptSystemRequestBus::Broadcast(&AZ::ScriptSystemRequests::GarbageCollect);
}
void EditorScriptCanvasComponent::SetAssetId(const SourceHandle& assetId)
{
if (m_sourceHandle.Describe() != assetId.Describe())
@@ -93,9 +93,7 @@ namespace ScriptCanvasEditor
//=====================================================================
// EditorEntityContextNotificationBus
void OnStartPlayInEditor() override;
void OnStopPlayInEditor() override;
protected:
enum class SourceChangeDescription : AZ::u8
@@ -34,6 +34,7 @@
#include <ScriptCanvas/Core/Datum.h>
#include <ScriptCanvas/Data/DataRegistry.h>
#include <ScriptCanvas/Libraries/Libraries.h>
#include <ScriptCanvas/PerformanceStatisticsBus.h>
#include <ScriptCanvas/Variable/VariableCore.h>
#include <ScriptCanvas/View/EditCtrls/GenericLineEditCtrl.h>
@@ -338,10 +339,20 @@ namespace ScriptCanvasEditor
}
};
openers.push_back({ "O3DE_ScriptCanvasEditor", "Open In Script Canvas Editor...", QIcon(), scriptCanvasEditorCallback });
openers.push_back({ "O3DE_ScriptCanvasEditor", "Open In Script Canvas Editor...", QIcon(ScriptCanvasAssetDescription().GetIconPathImpl()), scriptCanvasEditorCallback });
}
}
void SystemComponent::OnStartPlayInEditor()
{
ScriptCanvas::Execution::PerformanceStatisticsEBus::Broadcast(&ScriptCanvas::Execution::PerformanceStatisticsBus::ClearSnaphotStatistics);
}
void SystemComponent::OnStopPlayInEditor()
{
AZ::ScriptSystemRequestBus::Broadcast(&AZ::ScriptSystemRequests::GarbageCollect);
}
void SystemComponent::OnUserSettingsActivated()
{
PopulateEditorCreatableTypes();
@@ -23,6 +23,7 @@
#include <Editor/View/Windows/Tools/UpgradeTool/Model.h>
#include <ScriptCanvas/Bus/ScriptCanvasBus.h>
#include <ScriptCanvas/Bus/ScriptCanvasExecutionBus.h>
#include <AzToolsFramework/Entity/EditorEntityContextBus.h>
namespace ScriptCanvasEditor
{
@@ -36,6 +37,8 @@ namespace ScriptCanvasEditor
, private AZ::Data::AssetBus::MultiHandler
, private AzToolsFramework::AssetSeedManagerRequests::Bus::Handler
, private AzToolsFramework::EditorContextMenuBus::Handler
, private AzToolsFramework::EditorEntityContextNotificationBus::Handler
{
public:
AZ_COMPONENT(SystemComponent, "{1DE7A120-4371-4009-82B5-8140CB1D7B31}");
@@ -97,7 +100,12 @@ namespace ScriptCanvasEditor
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
protected:
void OnStartPlayInEditor() override;
void OnStopPlayInEditor() override;
private:
SystemComponent(const SystemComponent&) = delete;
@@ -84,6 +84,7 @@ namespace ScriptCanvas
}
}
return true;
}
@@ -503,20 +503,21 @@ namespace ScriptCanvas
void InitializeInterpretedStatics(RuntimeData& runtimeData)
{
if (!runtimeData.m_areStaticsInitialized)
AZ_Error("ScriptCanvas", !runtimeData.m_areStaticsInitialized, "ScriptCanvas runtime data already initalized");
{
runtimeData.m_areStaticsInitialized = true;
for (auto& dependency : runtimeData.m_requiredAssets)
{
InitializeInterpretedStatics(dependency.Get()->GetData());
if (!dependency.Get()->GetData().m_areStaticsInitialized)
{
InitializeInterpretedStatics(dependency.Get()->GetData());
}
}
#if defined(AZ_PROFILE_BUILD) || defined(AZ_DEBUG_BUILD)
Execution::InitializeFromLuaStackFunctions(const_cast<Grammar::DebugSymbolMap&>(runtimeData.m_debugMap));
#endif
AZ_WarningOnce("ScriptCanvas", !runtimeData.m_areStaticsInitialized, "ScriptCanvas runtime data already initalized");
if (runtimeData.RequiresStaticInitialization())
{
AZ::ScriptLoadResult result{};
@@ -49,7 +49,10 @@ namespace ScriptCanvas
, config.asset.GetId().ToString<AZStd::string>().data());
#endif
Execution::InitializeInterpretedStatics(runtimeAsset->GetData());
if (!runtimeAsset->GetData().m_areStaticsInitialized)
{
Execution::InitializeInterpretedStatics(runtimeAsset->GetData());
}
}
void ExecutionStateInterpreted::ClearLuaRegistryIndex()