Files
Studio/Assets/Scripts/Panel_Toolbox.cs
2025-06-11 16:50:56 +09:00

132 lines
4.5 KiB
C#

using Studio.Command;
using Studio.Manage;
using UnityEngine;
using UnityEngine.UI;
using XRLib.UI;
namespace Studio.UI
{
public class Panel_Toolbox : PanelBase
{
public Button Button_Undo;
public Button Button_Redo;
public Button Button_SaveProject;
public Button Button_CopyObject;
public Button Button_DeleteObject;
public UVCToggleButton Button_MoveGizmo;
public UVCToggleButton Button_RotateGizmo;
public UVCToggleButton Button_ScaleGizmo;
public UVCToggleButton Button_Run;
public override void AfterAwake()
{
Button_Undo.onClick.AddListener(OnClickUndo);
Button_Redo.onClick.AddListener(OnClickRedo);
Button_SaveProject.onClick.AddListener(OnClickSaveProject);
Button_DeleteObject.onClick.AddListener(OnClickDeleteObject);
Button_CopyObject.onClick.AddListener(OnClickCopyObject);
Button_MoveGizmo= transform.Find(nameof(Button_MoveGizmo)).GetComponent<UVCToggleButton>();
Button_RotateGizmo = transform.Find(nameof(Button_RotateGizmo)).GetComponent<UVCToggleButton>();
Button_ScaleGizmo = transform.Find(nameof(Button_ScaleGizmo)).GetComponent<UVCToggleButton>();
Button_Run = transform.Find(nameof(Button_Run)).GetComponent<UVCToggleButton>();
Button_MoveGizmo.onClick.AddListener(OnClickMoveGizmo);
Button_RotateGizmo.onClick.AddListener(OnClickRotateGizmo);
Button_ScaleGizmo.onClick.AddListener(OnClickScaleGizmo);
Button_Run.onClick.AddListener(OnClickRun);
SetActionToggle(ObjectGizmo.Move, true); // Default to no gizmo active
}
void OffGizmoButtons()
{
Button_MoveGizmo.SetOn(false);
Button_ScaleGizmo.SetOn(false);
Button_RotateGizmo.SetOn(false);
}
public void SetActionToggle(UI.ObjectGizmo gizmo, bool isOn)
{
OffGizmoButtons();
switch (gizmo)
{
case UI.ObjectGizmo.Move:
Button_MoveGizmo.SetOn(isOn);
break;
case UI.ObjectGizmo.Rotate:
Button_RotateGizmo.SetOn(isOn);
break;
case UI.ObjectGizmo.Scale:
Button_ScaleGizmo.SetOn(isOn);
break;
}
}
private void OnClickRun()
{
Debug.Log("On Click ToolBox Run");
ManagerHub.instance.Get<RunManager>().ChangeState();
}
private void OnClickCopyObject()
{
Debug.Log("On Click ToolBox Copy Object");
var copyCommand = new CopyObjectCommand();
CommandInvoker.instance.Invoke(copyCommand);
}
private void OnClickDeleteObject()
{
Debug.Log("On Click ToolBox Delete Object");
var deleteCommand = new RemoveSelectObjectCommand();
CommandInvoker.instance.Invoke(deleteCommand);
}
private void OnClickScaleGizmo()
{
Debug.Log("On Click ToolBox Scale Gizmo");
//OffGizmoButtons();
Button_MoveGizmo.SetOn(false);
Button_RotateGizmo.SetOn(false);
var scaleCommand = new ActivateScaleGizmoCommand();
CommandInvoker.instance.Invoke(scaleCommand);
}
private void OnClickRotateGizmo()
{
Debug.Log("On Click ToolBox Rotate Gizmo");
Button_MoveGizmo.SetOn(false);
Button_ScaleGizmo.SetOn(false);
var rotateCommand = new ActivateRotateGizmoCommand();
CommandInvoker.instance.Invoke(rotateCommand);
}
private void OnClickMoveGizmo()
{
Debug.Log("On Click ToolBox Move Gizmo");
Button_RotateGizmo.SetOn(false);
Button_ScaleGizmo.SetOn(false);
var moveCommand = new ActivateMoveGizmoCommand();
CommandInvoker.instance.Invoke(moveCommand);
}
private void OnClickSaveProject()
{
Debug.Log("On Click ToolBox Save Project");
var saveCommand = new SaveProjectCommand();
CommandInvoker.instance.Invoke(saveCommand);
}
private void OnClickRedo()
{
Debug.Log("On Click ToolBox Redo");
CommandInvoker.instance.Redo();
}
private void OnClickUndo()
{
Debug.Log("On Click ToolBox Undo");
CommandInvoker.instance.Undo();
}
}
}