단축키, UndoRedo 개발중
This commit is contained in:
@@ -199,6 +199,7 @@ namespace UVC.UI.Menu
|
||||
/// <see cref="TopMenuView.OnMenuItemClicked"/> 이벤트가 발생했을 때 호출되는 핸들러입니다.
|
||||
/// 클릭된 메뉴 아이템(<paramref name="clickedItemData"/>)의 유효성을 검사하고,
|
||||
/// 연결된 <see cref="ICommand"/>를 실행합니다.
|
||||
/// IUndoableCommand인 경우 Undo/Redo 히스토리에 기록됩니다.
|
||||
/// </summary>
|
||||
/// <param name="clickedItemData">사용자가 클릭한 메뉴 아이템의 데이터입니다.</param>
|
||||
protected virtual void HandleMenuItemClicked(MenuItemData clickedItemData)
|
||||
@@ -223,9 +224,35 @@ namespace UVC.UI.Menu
|
||||
// 클릭된 메뉴 아이템 정보 로그 (디버깅 목적)
|
||||
ULog.Debug($"메뉴 아이템 클릭됨: {clickedItemData.ItemId} (표시 키: {clickedItemData.DisplayName})");
|
||||
|
||||
// 메뉴 아이템에 연결된 Command가 있다면 실행
|
||||
// Command가 null일 수 있으므로 null 조건부 연산자(?.) 사용
|
||||
clickedItemData.Command?.Execute(clickedItemData.CommandParameter);
|
||||
// 메뉴 아이템에 연결된 Command 실행
|
||||
ExecuteCommand(clickedItemData.Command, clickedItemData.CommandParameter);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Command를 실행합니다.
|
||||
/// IUndoableCommand인 경우 UndoRedoManager를 통해 실행하여 히스토리에 기록합니다.
|
||||
/// 일반 ICommand인 경우 직접 실행합니다.
|
||||
/// </summary>
|
||||
/// <param name="command">실행할 Command</param>
|
||||
/// <param name="parameter">Command 파라미터</param>
|
||||
protected virtual void ExecuteCommand(ICommand command, object parameter = null)
|
||||
{
|
||||
if (command == null) return;
|
||||
|
||||
// IUndoableCommand인 경우 UndoRedoManager를 통해 실행
|
||||
if (command is IUndoableCommand undoableCommand)
|
||||
{
|
||||
// UndoRedoManager가 존재하는지 확인 (Studio 씬에서만 사용 가능)
|
||||
var undoRedoManager = FindAnyObjectByType<UVC.Studio.Manager.UndoRedoManager>();
|
||||
if (undoRedoManager != null)
|
||||
{
|
||||
undoRedoManager.ExecuteCommand(undoableCommand, parameter);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 일반 ICommand이거나 UndoRedoManager가 없는 경우 직접 실행
|
||||
command.Execute(parameter);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user