Added WIP UndoRedoStack
This commit is contained in:
parent
70559204bf
commit
b3d15b6a39
|
@ -3,7 +3,7 @@
|
||||||
\author Tng Kah Wei, kahwei.tng, 390009620
|
\author Tng Kah Wei, kahwei.tng, 390009620
|
||||||
\par email: kahwei.tng\@digipen.edu
|
\par email: kahwei.tng\@digipen.edu
|
||||||
\date Sep 27, 2022
|
\date Sep 27, 2022
|
||||||
\brief Contains the definition of the functions for the ScriptStore managed
|
\brief Contains the definition of the functions for the Editor managed
|
||||||
static class.
|
static class.
|
||||||
|
|
||||||
Note: This file is written in C++17/CLI.
|
Note: This file is written in C++17/CLI.
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
/************************************************************************************//*!
|
||||||
|
\file UndoRedoStack.cxx
|
||||||
|
\author Tng Kah Wei, kahwei.tng, 390009620
|
||||||
|
\par email: kahwei.tng\@digipen.edu
|
||||||
|
\date Sep 29, 2022
|
||||||
|
\brief Contains the definition of the functions for the UndoRedoStack managed
|
||||||
|
class.
|
||||||
|
|
||||||
|
Note: This file is written in C++17/CLI.
|
||||||
|
|
||||||
|
Copyright (C) 2022 DigiPen Institute of Technology.
|
||||||
|
Reproduction or disclosure of this file or its contents without the prior written consent
|
||||||
|
of DigiPen Institute of Technology is prohibited.
|
||||||
|
*//*************************************************************************************/
|
||||||
|
// Precompiled Headers
|
||||||
|
#include "SHpch.h"
|
||||||
|
// Primary Header
|
||||||
|
#include "UndoRedoStack.hxx"
|
||||||
|
// External Dependencies
|
||||||
|
#include "Editor/SHEditorUI.h"
|
||||||
|
// Project Headers
|
||||||
|
|
||||||
|
namespace SHADE
|
||||||
|
{
|
||||||
|
void UndoRedoStack::Add(Command command)
|
||||||
|
{
|
||||||
|
// Erase any other actions ahead of the current action
|
||||||
|
if (latestActionIndex < commandStack->Count - 1)
|
||||||
|
{
|
||||||
|
commandStack->RemoveRange(latestActionIndex + 1, commandStack->Count - latestActionIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the command
|
||||||
|
commandStack->Add(command);
|
||||||
|
|
||||||
|
// Increment latest command
|
||||||
|
++latestActionIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UndoRedoStack::Undo()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void UndoRedoStack::Redo()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
/************************************************************************************//*!
|
||||||
|
\file UndoRedoStack.hxx
|
||||||
|
\author Tng Kah Wei, kahwei.tng, 390009620
|
||||||
|
\par email: kahwei.tng\@digipen.edu
|
||||||
|
\date Sep 29, 2022
|
||||||
|
\brief Contains the definition of the managed UndoRedoStack class.
|
||||||
|
|
||||||
|
Note: This file is written in C++17/CLI.
|
||||||
|
|
||||||
|
Copyright (C) 2022 DigiPen Institute of Technology.
|
||||||
|
Reproduction or disclosure of this file or its contents without the prior written consent
|
||||||
|
of DigiPen Institute of Technology is prohibited.
|
||||||
|
*//*************************************************************************************/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace SHADE
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Class that is able to store a stack of actions that can be done and redone.
|
||||||
|
/// </summary>
|
||||||
|
private ref class UndoRedoStack sealed
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/*-----------------------------------------------------------------------------*/
|
||||||
|
/* Type Definitions */
|
||||||
|
/*-----------------------------------------------------------------------------*/
|
||||||
|
value struct Command
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
System::Action^ UndoAction;
|
||||||
|
System::Action^ RedoAction;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------------------*/
|
||||||
|
/* Usage Functions */
|
||||||
|
/*-----------------------------------------------------------------------------*/
|
||||||
|
void Add(Command command);
|
||||||
|
void Undo();
|
||||||
|
void Redo();
|
||||||
|
|
||||||
|
private:
|
||||||
|
/*-----------------------------------------------------------------------------*/
|
||||||
|
/* Data Members */
|
||||||
|
/*-----------------------------------------------------------------------------*/
|
||||||
|
int latestActionIndex = -1;
|
||||||
|
System::Collections::Generic::List<Command>^ commandStack = gcnew System::Collections::Generic::List<Command>();
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue