Files
XRLib/Assets/Scripts/Studio/StudioSideTabBar.cs
2025-12-12 19:28:20 +09:00

69 lines
2.4 KiB
C#

#nullable enable
using UVC.Studio.Cameras;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.EventSystems;
using UVC.Core;
using UVC.UI.List.ComponentList;
using UVC.UI.Tab;
namespace UVC.Studio
{
public class StudioSideTabBar : SingletonScene<StudioSideTabBar>, IPointerEnterHandler, IPointerExitHandler
{
[SerializeField]
private TabController? tabController;
protected override void Init()
{
if (tabController == null)
{
Debug.LogError("SideTabBar: TabController가 할당되지 않았습니다.");
return;
}
}
public void InitTab()
{
var infos = ComponentList.GenerateData();
// 1. TabConfig 설정
tabController?.AddTabConfig("Explorer", "탐색기", "Factory/Prefabs/Tab/TabContentComponentListTab", "Prefabs/UI/Images/icon_side_tab_explorer_24", infos, true);
tabController?.AddTabConfig("Library", "라이브러리", "Factory/Prefabs/Tab/TabContentLibraryGrid", "Prefabs/UI/Images/icon_side_tab_library_24", "라이브러리", true);
// 2. 컨트롤러 초기화
tabController?.Initialize();
if (tabController != null)
{
tabController.OnTabChanged += (index) =>
{
Debug.Log($"탭이 변경되었습니다: {index}");
};
}
}
/// <summary>
/// 마우스 포인터가 이 UI 요소의 영역 안으로 들어왔을 때 호출됩니다.
/// UI와 상호작용하는 동안 3D 뷰의 카메라가 움직이지 않도록 컨트롤러를 비활성화합니다.
/// </summary>
public virtual void OnPointerEnter(PointerEventData eventData)
{
StudioCameraController.Instance.Enable = false; // 카메라 컨트롤러 비활성화
}
/// <summary>
/// 마우스 포인터가 이 UI 요소의 영역 밖으로 나갔을 때 호출됩니다.
/// 카메라 컨트롤을 다시 활성화하여 3D 뷰를 조작할 수 있도록 합니다.
/// </summary>
public virtual void OnPointerExit(PointerEventData eventData)
{
StudioCameraController.Instance.Enable = true; // 카메라 컨트롤러 활성화
}
}
}