From 70c2b7ae57e4a9c613a53b11781624d6e82f73a9 Mon Sep 17 00:00:00 2001 From: wsh Date: Thu, 3 Apr 2025 11:56:48 +0900 Subject: [PATCH] 1 --- .../Studio/{Managers => Core}/SystemMain.cs | 0 .../{Managers => Core}/SystemMain.cs.meta | 0 .../Scripts/Studio/Managers/CommandInvoker.cs | 18 +++++++++++++----- 3 files changed, 13 insertions(+), 5 deletions(-) rename Assets/Scripts/Studio/{Managers => Core}/SystemMain.cs (100%) rename Assets/Scripts/Studio/{Managers => Core}/SystemMain.cs.meta (100%) diff --git a/Assets/Scripts/Studio/Managers/SystemMain.cs b/Assets/Scripts/Studio/Core/SystemMain.cs similarity index 100% rename from Assets/Scripts/Studio/Managers/SystemMain.cs rename to Assets/Scripts/Studio/Core/SystemMain.cs diff --git a/Assets/Scripts/Studio/Managers/SystemMain.cs.meta b/Assets/Scripts/Studio/Core/SystemMain.cs.meta similarity index 100% rename from Assets/Scripts/Studio/Managers/SystemMain.cs.meta rename to Assets/Scripts/Studio/Core/SystemMain.cs.meta diff --git a/Assets/Scripts/Studio/Managers/CommandInvoker.cs b/Assets/Scripts/Studio/Managers/CommandInvoker.cs index e6a14733..06098c4c 100644 --- a/Assets/Scripts/Studio/Managers/CommandInvoker.cs +++ b/Assets/Scripts/Studio/Managers/CommandInvoker.cs @@ -4,8 +4,16 @@ namespace XED.Command { public class CommandInvoker { - public Stack commandStack = new Stack(); - public void Invoke(T command) where T : IReversibleCommand + Stack commandStack = new(); + Stack undoableStack = new (); + public void Invoke(IReversibleCommand command) + { + command.Execute(); + commandStack.Push(command); + undoableStack.Push(command); + } + + public void Invoke(IIrreversibleCommand command) { command.Execute(); commandStack.Push(command); @@ -13,12 +21,12 @@ namespace XED.Command public void Undo() { - if (commandStack.Count == 0) + if (undoableStack.Count == 0) { return; } - var command = commandStack.Pop(); - (command as IReversibleCommand) .Undo(); + var command = undoableStack.Pop(); + command.Undo(); } } } \ No newline at end of file