version upgrader in a presumed working story
Signed-off-by: chcurran <82187351+carlitosan@users.noreply.github.com>
This commit is contained in:
@@ -209,7 +209,6 @@ namespace ScriptCanvasEditor
|
||||
AZ::Outcome<ScriptCanvasEditor::SourceHandle, AZStd::string> LoadFromFile(AZStd::string_view path)
|
||||
{
|
||||
namespace JSRU = AZ::JsonSerializationUtils;
|
||||
using namespace ScriptCanvas;
|
||||
|
||||
auto fileStringOutcome = AZ::Utils::ReadFile<AZStd::string>(path);
|
||||
if (!fileStringOutcome)
|
||||
@@ -218,7 +217,7 @@ namespace ScriptCanvasEditor
|
||||
}
|
||||
|
||||
const auto& asString = fileStringOutcome.GetValue();
|
||||
DataPtr scriptCanvasData = AZStd::make_shared<ScriptCanvas::ScriptCanvasData>();
|
||||
ScriptCanvas::DataPtr scriptCanvasData = aznew ScriptCanvas::ScriptCanvasData();
|
||||
if (!scriptCanvasData)
|
||||
{
|
||||
return AZ::Failure(AZStd::string("failed to allocate ScriptCanvas::ScriptCanvasData after loading source file"));
|
||||
@@ -314,7 +313,7 @@ namespace ScriptCanvasEditor
|
||||
listener->OnSerialize();
|
||||
}
|
||||
|
||||
auto saveOutcome = JSRU::SaveObjectToStream<ScriptCanvas::ScriptCanvasData>(graphData, stream, nullptr, &settings);
|
||||
auto saveOutcome = JSRU::SaveObjectToStream<ScriptCanvas::ScriptCanvasData>(graphData.get(), stream, nullptr, &settings);
|
||||
if (!saveOutcome.IsSuccess())
|
||||
{
|
||||
return AZ::Failure(AZStd::string::format("JSON serialization failed to save source: %s", saveOutcome.GetError().c_str()));
|
||||
|
||||
@@ -1069,7 +1069,7 @@ namespace ScriptCanvasEditor
|
||||
m_owner = &owner;
|
||||
}
|
||||
|
||||
ScriptCanvas::ScriptCanvasData* Graph::GetOwnership() const
|
||||
ScriptCanvas::DataPtr Graph::GetOwnership() const
|
||||
{
|
||||
return const_cast<Graph*>(this)->m_owner;
|
||||
}
|
||||
@@ -1354,7 +1354,7 @@ namespace ScriptCanvasEditor
|
||||
|
||||
void Graph::SignalDirty()
|
||||
{
|
||||
SourceHandle handle(m_owner->shared_from_this(), {}, {});
|
||||
SourceHandle handle(m_owner, {}, {});
|
||||
GeneralRequestBus::Broadcast(&GeneralRequests::SignalSceneDirty, handle);
|
||||
}
|
||||
|
||||
|
||||
@@ -438,10 +438,11 @@ namespace ScriptCanvasEditor
|
||||
if (nodeConfig.IsValid())
|
||||
{
|
||||
ScriptCanvas::NodeUpdateSlotReport nodeUpdateSlotReport;
|
||||
auto nodeEntity = node->GetEntityId();
|
||||
auto nodeOutcome = graph->ReplaceNodeByConfig(node, nodeConfig, nodeUpdateSlotReport);
|
||||
if (nodeOutcome.IsSuccess())
|
||||
{
|
||||
ScriptCanvas::MergeUpdateSlotReport(node->GetEntityId(), sm->m_updateReport, nodeUpdateSlotReport);
|
||||
ScriptCanvas::MergeUpdateSlotReport(nodeEntity, sm->m_updateReport, nodeUpdateSlotReport);
|
||||
|
||||
sm->m_allNodes.erase(node);
|
||||
sm->m_outOfDateNodes.erase(node);
|
||||
@@ -687,7 +688,8 @@ namespace ScriptCanvasEditor
|
||||
void EditorGraphUpgradeMachine::OnComplete(IState::ExitStatus exitStatus)
|
||||
{
|
||||
UpgradeNotificationsBus::Broadcast(&UpgradeNotifications::OnGraphUpgradeComplete, m_asset, exitStatus == IState::ExitStatus::Skipped);
|
||||
m_asset = {};
|
||||
// releasing the asset at this stage of the system tick causes a memory crash
|
||||
// m_asset = {};
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -302,7 +302,7 @@ namespace ScriptCanvasEditor
|
||||
const GraphStatisticsHelper& GetNodeUsageStatistics() const;
|
||||
|
||||
void MarkOwnership(ScriptCanvas::ScriptCanvasData& owner);
|
||||
ScriptCanvas::ScriptCanvasData* GetOwnership() const;
|
||||
ScriptCanvas::DataPtr GetOwnership() const;
|
||||
|
||||
// Finds and returns all nodes within the graph that are of the specified type
|
||||
template <typename NodeType>
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace ScriptCanvasEditor
|
||||
AZ::SystemTickBus::QueueFunction([this, tmpFileName]()
|
||||
{
|
||||
FileSaveResult result;
|
||||
result.fileSaveError = "Failed to move updated file from temporary location to tmpFileName destination";
|
||||
result.fileSaveError = "Failed to move updated file from temporary location to original destination.";
|
||||
result.tempFileRemovalError = RemoveTempFile(tmpFileName);
|
||||
m_onComplete(result);
|
||||
});
|
||||
@@ -97,7 +97,16 @@ namespace ScriptCanvasEditor
|
||||
}
|
||||
else
|
||||
{
|
||||
// #sc_editor_asset - skip save, narrow down the memory corruption
|
||||
AZ::SystemTickBus::QueueFunction([this, tmpFileName]()
|
||||
{
|
||||
FileSaveResult result;
|
||||
result.tempFileRemovalError = RemoveTempFile(tmpFileName);
|
||||
m_onComplete(result);
|
||||
});
|
||||
|
||||
// the actual move attempt
|
||||
/*
|
||||
auto moveResult = AZ::IO::SmartMove(tmpFileName.c_str(), target.c_str());
|
||||
if (moveResult.GetResultCode() == AZ::IO::ResultCode::Success)
|
||||
{
|
||||
@@ -105,6 +114,7 @@ namespace ScriptCanvasEditor
|
||||
AZ::IO::FileRequestPtr flushRequest = streamer->FlushCache(target.c_str());
|
||||
// Bump the slice asset up in the asset processor's queue.
|
||||
AzFramework::AssetSystemRequestBus::Broadcast(&AzFramework::AssetSystem::AssetSystemRequests::EscalateAssetBySearchTerm, target.c_str());
|
||||
|
||||
AZ::SystemTickBus::QueueFunction([this, tmpFileName]()
|
||||
{
|
||||
FileSaveResult result;
|
||||
@@ -124,6 +134,7 @@ namespace ScriptCanvasEditor
|
||||
});
|
||||
streamer->QueueRequest(flushRequest);
|
||||
}
|
||||
**/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -138,15 +138,17 @@ namespace ScriptCanvasEditor
|
||||
|
||||
void Modifier::ModificationComplete(const ModificationResult& result)
|
||||
{
|
||||
m_result = result;
|
||||
|
||||
if (result.errorMessage.empty())
|
||||
if (!result.errorMessage.empty())
|
||||
{
|
||||
SaveModifiedGraph(result);
|
||||
ReportModificationError(result.errorMessage);
|
||||
}
|
||||
else if (m_result.asset.Describe() != result.asset.Describe())
|
||||
{
|
||||
ReportModificationError("Received modifiction complete notification for different result");
|
||||
}
|
||||
else
|
||||
{
|
||||
ReportModificationError(result.errorMessage);
|
||||
SaveModifiedGraph(result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,15 +189,15 @@ namespace ScriptCanvasEditor
|
||||
|
||||
void Modifier::ReportModificationError(AZStd::string_view report)
|
||||
{
|
||||
m_result.asset = {};
|
||||
m_result.errorMessage = report;
|
||||
m_results.m_failures.push_back(m_result);
|
||||
m_results.m_failures.push_back({ m_result.asset.Describe(), report });
|
||||
ModifyNextAsset();
|
||||
}
|
||||
|
||||
void Modifier::ReportModificationSuccess()
|
||||
{
|
||||
m_results.m_successes.push_back(m_result.asset);
|
||||
m_result.asset = m_result.asset.Describe();
|
||||
m_results.m_successes.push_back({ m_result.asset.Describe(), {} });
|
||||
ModifyNextAsset();
|
||||
}
|
||||
|
||||
|
||||
@@ -306,8 +306,8 @@ namespace ScriptCanvas
|
||||
{
|
||||
class ScriptCanvasData;
|
||||
|
||||
using DataPtr = AZStd::shared_ptr<ScriptCanvasData>;
|
||||
using DataPtrConst = AZStd::shared_ptr<const ScriptCanvasData>;
|
||||
using DataPtr = AZStd::intrusive_ptr<ScriptCanvasData>;
|
||||
using DataPtrConst = AZStd::intrusive_ptr<const ScriptCanvasData>;
|
||||
}
|
||||
|
||||
namespace ScriptCanvasEditor
|
||||
@@ -372,7 +372,7 @@ namespace ScriptCanvasEditor
|
||||
namespace ScriptCanvas
|
||||
{
|
||||
class ScriptCanvasData
|
||||
: public AZStd::enable_shared_from_this<ScriptCanvasData>
|
||||
: public AZStd::intrusive_refcount<AZStd::atomic_uint, AZStd::intrusive_default_delete>
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
@@ -152,19 +152,19 @@ namespace ScriptCanvas
|
||||
{
|
||||
if (azrtti_istypeof<Nodes::String::Format>(execution->GetId().m_node))
|
||||
{
|
||||
return MetaDataPtr(aznew FormatStringMetaData());
|
||||
return AZStd::make_shared<FormatStringMetaData>();
|
||||
}
|
||||
else if (azrtti_istypeof<Nodes::String::Print>(execution->GetId().m_node))
|
||||
{
|
||||
return MetaDataPtr(aznew PrintMetaData());
|
||||
return AZStd::make_shared<PrintMetaData>();
|
||||
}
|
||||
else if (azrtti_istypeof<Nodes::Math::MathExpression>(execution->GetId().m_node))
|
||||
{
|
||||
return MetaDataPtr(aznew MathExpressionMetaData());
|
||||
return AZStd::make_shared<MathExpressionMetaData>();
|
||||
}
|
||||
else if (execution->GetSymbol() == Symbol::FunctionCall)
|
||||
{
|
||||
return MetaDataPtr(aznew FunctionCallDefaultMetaData());
|
||||
return AZStd::make_shared<FunctionCallDefaultMetaData>();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user