This commit is contained in:
wsh
2025-04-03 11:41:16 +09:00
parent 53abd9a361
commit 86157ee5d8
14 changed files with 86 additions and 56 deletions

View File

@@ -135,7 +135,7 @@ namespace XED.RuntimeGizmo
RTUndoRedo.Get.Undo();
onTransformChanged?.Invoke(transformObjects);
});
CommandManager.I.AddCommand(command);
CommandManager.instance.AddCommand(command);
}
}
}

View File

@@ -88,7 +88,7 @@ namespace XED.Asset
siblingIndex.Add(searchAsset.hierarchyItem.GetSiblingIndex());
}
var command = new RemoveObjectCommand(removeList, siblingIndex, this);
CommandManager.I.ExecuteCommand(command);
CommandManager.instance.ExecuteCommand(command);
}
private void OnCopyObject(List<CustomAssetRenderObject> objects)
@@ -108,7 +108,7 @@ namespace XED.Asset
connectedAssets.Add(copyAsset);
}
var command = new CopyObjectCommand(copySources, copyList, this);
CommandManager.I.ExecuteCommand(command);
CommandManager.instance.ExecuteCommand(command);
}
// Update is called once per frame
@@ -175,7 +175,7 @@ namespace XED.Asset
};
connectedAsset.renderObject.onTransformChanged = connectedAsset.assetData.OnTransformDataChanged;
var command = new CreateConnectedAssetCommand(connectedAsset, this);
CommandManager.I.ExecuteCommand(command);
CommandManager.instance.ExecuteCommand(command);
}
public void OnParentChanged(HierarchyItem parentItem, HierarchyItem childItem)
{

View File

@@ -293,7 +293,7 @@ namespace XED.Util
ActionCommand command = new ActionCommand(
() => Align(objectsToAlign, primary, primaryDir, secondaryDir),
() => UndoAlign(objectsToAlign, originalPos));
CommandManager.I.ExecuteCommand(command);
CommandManager.instance.ExecuteCommand(command);
}
@@ -401,7 +401,7 @@ namespace XED.Util
{
fromObject.transform.position -= dir[0];
});
CommandManager.I.ExecuteCommand(command);
CommandManager.instance.ExecuteCommand(command);
}
}
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eefa95bccca3b324db3ce4c6b1d4ee44
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -5,7 +5,7 @@ namespace XED.Core
{
public abstract class UnitySingleton<T> : UnityEngine.MonoBehaviour where T : UnitySingleton<T>
{
private static T instance;
private static T _instance;
private static object _lock = new object();
protected static bool applicationIsQuitting = false;
public static bool IsApplicationQuitting
@@ -16,7 +16,7 @@ namespace XED.Core
}
}
public static T I
public static T instance
{
get
{
@@ -30,19 +30,19 @@ namespace XED.Core
lock (_lock)
{
if (instance == null)
if (_instance == null)
{
instance = FindFirstObjectByType(typeof(T)) as T;
if (instance == null)
_instance = FindFirstObjectByType(typeof(T)) as T;
if (_instance == null)
{
GameObject singleton = new GameObject(typeof(T).Name);
instance = singleton.AddComponent<T>();
instance.Init();
instance.name = typeof(T).ToString();
DontDestroyOnLoad(instance.gameObject);
_instance = singleton.AddComponent<T>();
_instance.Init();
_instance.name = typeof(T).ToString();
DontDestroyOnLoad(_instance.gameObject);
}
}
return instance;
return _instance;
}
}
}
@@ -51,12 +51,12 @@ namespace XED.Core
{
lock (_lock)
{
if (instance == null)
if (_instance == null)
{
instance = this as T;
_instance = this as T;
}
else if (instance != this)
else if (_instance != this)
{
Debug.LogError(this.name + " Destroy !!!");
Destroy(this.gameObject);
@@ -77,29 +77,4 @@ namespace XED.Core
#endif
}
}
public abstract class ISingleton<T> where T : class, new()
{
static volatile T instance = default(T);
static readonly object padlock = new object();
protected ISingleton()
{
}
public static T I
{
get
{
lock (padlock)
{
if (instance == null)
{
instance = new T();
(instance as ISingleton<T>).Init();
}
return instance;
}
}
}
public virtual void Init() { }
}
}

View File

@@ -0,0 +1,24 @@
using System.Collections.Generic;
namespace XED.Command
{
public class CommandInvoker
{
public Stack<ICommand> commandStack = new Stack<ICommand>();
public void Invoke<T>(T command) where T : IReversibleCommand
{
command.Execute();
commandStack.Push(command);
}
public void Undo()
{
if (commandStack.Count == 0)
{
return;
}
var command = commandStack.Pop();
(command as IReversibleCommand) .Undo();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 460b7535dba2a4347a78cc24adcdee96

View File

@@ -78,10 +78,11 @@ namespace XED.Manage
//Panel_ShortCut
canvas_static.panel_shortcuts.onClickOpenAssetWindow += (() => assetWindow.SetActive(!assetWindow.activeSelf));
canvas_static.panel_shortcuts.onClickOpenComponentWindow += (() => componentWindow.SetActive(!componentWindow.activeSelf));
canvas_static.panel_shortcuts.onClickUndo += CommandManager.I.Undo;
canvas_static.panel_shortcuts.onClickRedo += CommandManager.I.Redo;
canvas_static.panel_shortcuts.onClickUndo += CommandManager.instance.Undo;
canvas_static.panel_shortcuts.onClickRedo += CommandManager.instance.Redo;
canvas_static.panel_shortcuts.onclickSave += projectManager.SaveProject;
//Panel Header
canvas_static.panel_topbar.onClickSaveProject += projectManager.SaveProject;
canvas_static.panel_topbar.onClickLoadProject += projectManager.LoadProject;
@@ -131,7 +132,7 @@ namespace XED.Manage
void DefaultActionSetting()
{
var commandHandler = CommandManager.I.GetInputHandler();
var commandHandler = CommandManager.instance.GetInputHandler();
userInputManager.SetHandler(GetDefaultInputHandler());
userInputManager.SetHandler(commandHandler);
canvas_static.panel_modecontrol.onClickObjectMode += () => statusPanel.SetMode(ModePanel.ProgramMode.ObjectLayout);

View File

@@ -105,7 +105,7 @@ namespace XED.Manage
onRestoreHierarchy?.Invoke(parent, child);
}
}
CommandManager.I.Clear();
CommandManager.instance.Clear();
}
public void NewProject()
@@ -115,7 +115,7 @@ namespace XED.Manage
curProjectPath = string.Empty;
curSceneData = null;
connector.connectedAssets.Clear();
CommandManager.I.Clear();
CommandManager.instance.Clear();
}
}

View File

@@ -0,0 +1,18 @@
using XED.Command;
namespace XED.Core
{
public class SystemMain : UnitySingleton<SystemMain>
{
public CommandInvoker commandInvoker
{
get;
private set;
}
private void Awake()
{
commandInvoker = new CommandInvoker();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 2778cc56cc78c8a46846112e3aad69d2

View File

@@ -189,7 +189,7 @@ namespace XED.UI
}
onTransformChanged?.Invoke(transformsChanged);
});
CommandManager.I.AddCommand(command);
CommandManager.instance.AddCommand(command);
}
void ChangeTransformValue(Transform t, InputFieldType type, float v)
{

View File

@@ -363,7 +363,7 @@ namespace XED.HierarchyTree
oldParent.AddChild(selectedItem, oldIndex);
ResetData();
});
CommandManager.I.ExecuteCommand(command);
CommandManager.instance.ExecuteCommand(command);
}
}
else
@@ -386,7 +386,7 @@ namespace XED.HierarchyTree
oldParent.AddChild(srcItem, oldIndex);
ResetData();
});
CommandManager.I.ExecuteCommand(command);
CommandManager.instance.ExecuteCommand(command);
}
}
public void SetToNextSiblingItem(HierarchyItem srcItem, HierarchyItem destItem)
@@ -416,7 +416,7 @@ namespace XED.HierarchyTree
oldParent.AddChild(selectedItem, oldIndex);
ResetData();
});
CommandManager.I.ExecuteCommand(command);
CommandManager.instance.ExecuteCommand(command);
}
}
else
@@ -439,7 +439,7 @@ namespace XED.HierarchyTree
oldParent.AddChild(srcItem, oldIndex);
ResetData();
});
CommandManager.I.ExecuteCommand(command);
CommandManager.instance.ExecuteCommand(command);
}
}
public void SetToPriorSiblingItem(HierarchyItem srcItem, HierarchyItem destItem)
@@ -469,7 +469,7 @@ namespace XED.HierarchyTree
oldParent.AddChild(selectedItem, oldIndex);
ResetData();
});
CommandManager.I.ExecuteCommand(command);
CommandManager.instance.ExecuteCommand(command);
}
}
else
@@ -492,7 +492,7 @@ namespace XED.HierarchyTree
oldParent.AddChild(srcItem, oldIndex);
ResetData();
});
CommandManager.I.ExecuteCommand(command);
CommandManager.instance.ExecuteCommand(command);
}
}
public void SearchData(string name)