Use weak reference for undo state, as it is an entirely internal class
Signed-off-by: carlitosan <82187351+carlitosan@users.noreply.github.com>
This commit is contained in:
@@ -18,10 +18,10 @@ namespace ScriptCanvasEditor
|
||||
{
|
||||
}
|
||||
|
||||
UndoHelper::UndoHelper(SourceHandle memoryAsset)
|
||||
UndoHelper::UndoHelper(Graph* graph)
|
||||
: m_undoState(this)
|
||||
{
|
||||
SetSource(memoryAsset);
|
||||
SetSource(graph);
|
||||
}
|
||||
|
||||
UndoHelper::~UndoHelper()
|
||||
@@ -29,10 +29,10 @@ namespace ScriptCanvasEditor
|
||||
UndoRequestBus::Handler::BusDisconnect();
|
||||
}
|
||||
|
||||
void UndoHelper::SetSource(SourceHandle source)
|
||||
void UndoHelper::SetSource(Graph* graph)
|
||||
{
|
||||
m_memoryAsset = source;
|
||||
UndoRequestBus::Handler::BusConnect(source.Get()->GetScriptCanvasId());
|
||||
m_graph = graph;
|
||||
UndoRequestBus::Handler::BusConnect(graph->GetScriptCanvasId());
|
||||
}
|
||||
|
||||
ScriptCanvasEditor::UndoCache* UndoHelper::GetSceneUndoCache()
|
||||
@@ -42,8 +42,8 @@ namespace ScriptCanvasEditor
|
||||
|
||||
ScriptCanvasEditor::UndoData UndoHelper::CreateUndoData()
|
||||
{
|
||||
AZ::EntityId graphCanvasGraphId = m_memoryAsset.Get()->GetGraphCanvasGraphId();
|
||||
ScriptCanvas::ScriptCanvasId scriptCanvasId = m_memoryAsset.Get()->GetScriptCanvasId();
|
||||
AZ::EntityId graphCanvasGraphId = m_graph->GetGraphCanvasGraphId();
|
||||
ScriptCanvas::ScriptCanvasId scriptCanvasId = m_graph->GetScriptCanvasId();
|
||||
|
||||
GraphCanvas::GraphModelRequestBus::Event(graphCanvasGraphId, &GraphCanvas::GraphModelRequests::OnSaveDataDirtied, graphCanvasGraphId);
|
||||
|
||||
@@ -94,22 +94,22 @@ namespace ScriptCanvasEditor
|
||||
void UndoHelper::AddGraphItemChangeUndo(AZStd::string_view undoLabel)
|
||||
{
|
||||
GraphItemChangeCommand* command = aznew GraphItemChangeCommand(undoLabel);
|
||||
command->Capture(m_memoryAsset, true);
|
||||
command->Capture(m_memoryAsset, false);
|
||||
command->Capture(m_graph, true);
|
||||
command->Capture(m_graph, false);
|
||||
AddUndo(command);
|
||||
}
|
||||
|
||||
void UndoHelper::AddGraphItemAdditionUndo(AZStd::string_view undoLabel)
|
||||
{
|
||||
GraphItemAddCommand* command = aznew GraphItemAddCommand(undoLabel);
|
||||
command->Capture(m_memoryAsset, false);
|
||||
command->Capture(m_graph, false);
|
||||
AddUndo(command);
|
||||
}
|
||||
|
||||
void UndoHelper::AddGraphItemRemovalUndo(AZStd::string_view undoLabel)
|
||||
{
|
||||
GraphItemRemovalCommand* command = aznew GraphItemRemovalCommand(undoLabel);
|
||||
command->Capture(m_memoryAsset, true);
|
||||
command->Capture(m_graph, true);
|
||||
AddUndo(command);
|
||||
}
|
||||
|
||||
@@ -190,7 +190,7 @@ namespace ScriptCanvasEditor
|
||||
|
||||
void UndoHelper::UpdateCache()
|
||||
{
|
||||
ScriptCanvas::ScriptCanvasId scriptCanvasId = m_memoryAsset.Get()->GetScriptCanvasId();
|
||||
ScriptCanvas::ScriptCanvasId scriptCanvasId = m_graph->GetScriptCanvasId();
|
||||
|
||||
UndoCache* undoCache = nullptr;
|
||||
UndoRequestBus::EventResult(undoCache, scriptCanvasId, &UndoRequests::GetSceneUndoCache);
|
||||
|
||||
@@ -21,13 +21,13 @@ namespace ScriptCanvasEditor
|
||||
public:
|
||||
|
||||
UndoHelper();
|
||||
UndoHelper(SourceHandle source);
|
||||
UndoHelper(Graph* source);
|
||||
~UndoHelper();
|
||||
|
||||
UndoCache* GetSceneUndoCache() override;
|
||||
UndoData CreateUndoData() override;
|
||||
|
||||
void SetSource(SourceHandle source);
|
||||
void SetSource(Graph* source);
|
||||
|
||||
void BeginUndoBatch(AZStd::string_view label) override;
|
||||
void EndUndoBatch() override;
|
||||
@@ -58,6 +58,6 @@ namespace ScriptCanvasEditor
|
||||
|
||||
Status m_status = Status::Idle;
|
||||
SceneUndoState m_undoState;
|
||||
SourceHandle m_memoryAsset;
|
||||
Graph* m_graph = nullptr;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -481,6 +481,7 @@ namespace ScriptCanvasEditor
|
||||
|
||||
ScriptCanvas::Graph::Activate();
|
||||
PostActivate();
|
||||
m_undoHelper.SetSource(this);
|
||||
}
|
||||
|
||||
void Graph::Deactivate()
|
||||
@@ -1067,7 +1068,6 @@ namespace ScriptCanvasEditor
|
||||
void Graph::MarkOwnership(ScriptCanvas::ScriptCanvasData& owner)
|
||||
{
|
||||
m_owner = &owner;
|
||||
m_undoHelper.SetSource(SourceHandle(GetOwnership(), {}, ""));
|
||||
}
|
||||
|
||||
ScriptCanvas::DataPtr Graph::GetOwnership() const
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace ScriptCanvasEditor
|
||||
{
|
||||
}
|
||||
|
||||
void GraphItemCommand::Capture(SourceHandle&, bool)
|
||||
void GraphItemCommand::Capture(Graph*, bool)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -105,10 +105,10 @@ namespace ScriptCanvasEditor
|
||||
RestoreItem(m_redoState);
|
||||
}
|
||||
|
||||
void GraphItemChangeCommand::Capture(SourceHandle& memoryAsset, bool captureUndo)
|
||||
void GraphItemChangeCommand::Capture(Graph* graph, bool captureUndo)
|
||||
{
|
||||
m_scriptCanvasId = memoryAsset.Get()->GetScriptCanvasId();
|
||||
m_graphCanvasGraphId = memoryAsset.Get()->GetGraphCanvasGraphId();
|
||||
m_scriptCanvasId = graph->GetScriptCanvasId();
|
||||
m_graphCanvasGraphId = graph->GetGraphCanvasGraphId();
|
||||
|
||||
UndoCache* undoCache = nullptr;
|
||||
UndoRequestBus::EventResult(undoCache, m_scriptCanvasId, &UndoRequests::GetSceneUndoCache);
|
||||
@@ -204,9 +204,9 @@ namespace ScriptCanvasEditor
|
||||
RestoreItem(m_redoState);
|
||||
}
|
||||
|
||||
void GraphItemAddCommand::Capture(SourceHandle& memoryAsset, bool)
|
||||
void GraphItemAddCommand::Capture(Graph* graph, bool)
|
||||
{
|
||||
GraphItemChangeCommand::Capture(memoryAsset, false);
|
||||
GraphItemChangeCommand::Capture(graph, false);
|
||||
}
|
||||
|
||||
//// Graph Item Removal Command
|
||||
@@ -225,8 +225,8 @@ namespace ScriptCanvasEditor
|
||||
RestoreItem(m_redoState);
|
||||
}
|
||||
|
||||
void GraphItemRemovalCommand::Capture(SourceHandle& memoryAsset, bool)
|
||||
void GraphItemRemovalCommand::Capture(Graph* graph, bool)
|
||||
{
|
||||
GraphItemChangeCommand::Capture(memoryAsset, true);
|
||||
GraphItemChangeCommand::Capture(graph, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace ScriptCanvasEditor
|
||||
void Undo() override;
|
||||
void Redo() override;
|
||||
|
||||
virtual void Capture(SourceHandle& memoryAsset, bool captureUndo);
|
||||
virtual void Capture(Graph* graph, bool captureUndo);
|
||||
|
||||
bool Changed() const override;
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace ScriptCanvasEditor
|
||||
|
||||
void Undo() override;
|
||||
void Redo() override;
|
||||
void Capture(SourceHandle& memoryAsset, bool captureUndo) override;
|
||||
void Capture(Graph* graph, bool captureUndo) override;
|
||||
|
||||
void RestoreItem(const AZStd::vector<AZ::u8>& restoreBuffer) override;
|
||||
|
||||
@@ -103,7 +103,7 @@ namespace ScriptCanvasEditor
|
||||
void Undo() override;
|
||||
void Redo() override;
|
||||
|
||||
void Capture(SourceHandle& memoryAsset, bool captureUndo) override;
|
||||
void Capture(Graph* graph, bool captureUndo) override;
|
||||
|
||||
protected:
|
||||
GraphItemAddCommand(const GraphItemAddCommand&) = delete;
|
||||
@@ -124,7 +124,7 @@ namespace ScriptCanvasEditor
|
||||
void Undo() override;
|
||||
void Redo() override;
|
||||
|
||||
void Capture(SourceHandle& memoryAsset, bool captureUndo) override;
|
||||
void Capture(Graph* graph, bool captureUndo) override;
|
||||
|
||||
protected:
|
||||
GraphItemRemovalCommand(const GraphItemRemovalCommand&) = delete;
|
||||
|
||||
Reference in New Issue
Block a user