Restore undo/redo

Signed-off-by: carlitosan <82187351+carlitosan@users.noreply.github.com>
This commit is contained in:
carlitosan
2021-12-06 12:12:46 -08:00
parent c218fd9b77
commit a76e9bba69
10 changed files with 68 additions and 37 deletions
@@ -11,6 +11,7 @@
#include <AzCore/Serialization/Utils.h>
#include <ScriptCanvas/Core/Graph.h>
#include <ScriptCanvas/Components/EditorGraph.h>
#include <ScriptCanvas/Variable/VariableBus.h>
#include <GraphCanvas/Components/SceneBus.h>
@@ -19,7 +20,6 @@
#include <Editor/Include/ScriptCanvas/Bus/EditorScriptCanvasBus.h>
#include <Editor/Assets/ScriptCanvasAssetTrackerBus.h>
#include <Editor/Assets/ScriptCanvasMemoryAsset.h>
namespace ScriptCanvasEditor
{
@@ -36,7 +36,7 @@ namespace ScriptCanvasEditor
{
}
void GraphItemCommand::Capture(ScriptCanvasMemoryAsset&, bool)
void GraphItemCommand::Capture(SourceHandle&, bool)
{
}
@@ -105,10 +105,10 @@ namespace ScriptCanvasEditor
RestoreItem(m_redoState);
}
void GraphItemChangeCommand::Capture(ScriptCanvasMemoryAsset& memoryAsset, bool captureUndo)
void GraphItemChangeCommand::Capture(SourceHandle& memoryAsset, bool captureUndo)
{
m_scriptCanvasId = memoryAsset.GetScriptCanvasId();
m_graphCanvasGraphId = memoryAsset.GetGraphId();
m_scriptCanvasId = memoryAsset.Get()->GetScriptCanvasId();
m_graphCanvasGraphId = memoryAsset.Get()->GetGraphCanvasGraphId();
UndoCache* undoCache = nullptr;
UndoRequestBus::EventResult(undoCache, m_scriptCanvasId, &UndoRequests::GetSceneUndoCache);
@@ -204,7 +204,7 @@ namespace ScriptCanvasEditor
RestoreItem(m_redoState);
}
void GraphItemAddCommand::Capture(ScriptCanvasMemoryAsset& memoryAsset, bool)
void GraphItemAddCommand::Capture(SourceHandle& memoryAsset, bool)
{
GraphItemChangeCommand::Capture(memoryAsset, false);
}
@@ -225,7 +225,7 @@ namespace ScriptCanvasEditor
RestoreItem(m_redoState);
}
void GraphItemRemovalCommand::Capture(ScriptCanvasMemoryAsset& memoryAsset, bool)
void GraphItemRemovalCommand::Capture(SourceHandle& memoryAsset, bool)
{
GraphItemChangeCommand::Capture(memoryAsset, true);
}
@@ -46,7 +46,7 @@ namespace ScriptCanvasEditor
void Undo() override;
void Redo() override;
virtual void Capture(ScriptCanvasMemoryAsset& memoryAsset, bool captureUndo);
virtual void Capture(SourceHandle& memoryAsset, bool captureUndo);
bool Changed() const override;
@@ -76,7 +76,7 @@ namespace ScriptCanvasEditor
void Undo() override;
void Redo() override;
void Capture(ScriptCanvasMemoryAsset& memoryAsset, bool captureUndo) override;
void Capture(SourceHandle& memoryAsset, 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(ScriptCanvasMemoryAsset& memoryAsset, bool captureUndo) override;
void Capture(SourceHandle& memoryAsset, bool captureUndo) override;
protected:
GraphItemAddCommand(const GraphItemAddCommand&) = delete;
@@ -124,7 +124,7 @@ namespace ScriptCanvasEditor
void Undo() override;
void Redo() override;
void Capture(ScriptCanvasMemoryAsset& memoryAsset, bool captureUndo) override;
void Capture(SourceHandle& memoryAsset, bool captureUndo) override;
protected:
GraphItemRemovalCommand(const GraphItemRemovalCommand&) = delete;
@@ -28,9 +28,9 @@ namespace ScriptCanvasEditor
// SceneUndoState
SceneUndoState::SceneUndoState(AzToolsFramework::UndoSystem::IUndoNotify* undoNotify)
: m_undoStack(AZStd::make_unique<AzToolsFramework::UndoSystem::UndoStack>(c_undoLimit, undoNotify))
, m_undoCache(AZStd::make_unique<UndoCache>())
{
m_undoStack = AZStd::make_unique<AzToolsFramework::UndoSystem::UndoStack>(c_undoLimit, undoNotify);
m_undoCache = AZStd::make_unique<UndoCache>();
}
void SceneUndoState::BeginUndoBatch(AZStd::string_view label)
@@ -61,6 +61,7 @@ namespace ScriptCanvasEditor
public:
AZ_CLASS_ALLOCATOR(SceneUndoState, AZ::SystemAllocator, 0);
SceneUndoState() = default;
SceneUndoState(AzToolsFramework::UndoSystem::IUndoNotify* undoNotify);
~SceneUndoState();