2025-11-10 20:32:10 +09:00
|
|
|
#nullable enable
|
2025-09-26 18:08:07 +09:00
|
|
|
using Cysharp.Threading.Tasks;
|
|
|
|
|
using UnityEngine;
|
2025-11-11 18:23:16 +09:00
|
|
|
using UVC.UI.List.Tree;
|
2025-09-26 18:08:07 +09:00
|
|
|
using UVC.UI.Tab;
|
2025-11-11 18:23:16 +09:00
|
|
|
using UVC.UI.Window;
|
2025-09-26 18:08:07 +09:00
|
|
|
|
2025-12-11 21:05:44 +09:00
|
|
|
namespace Factory.Tab
|
2025-09-26 18:08:07 +09:00
|
|
|
{
|
2025-11-11 18:23:16 +09:00
|
|
|
public class TabContentHierarchy : MonoBehaviour, ITabContent
|
2025-09-26 18:08:07 +09:00
|
|
|
{
|
|
|
|
|
[SerializeField]
|
2025-11-11 18:23:16 +09:00
|
|
|
private HierarchyWindow? hierarchyWindow;
|
2025-09-26 18:08:07 +09:00
|
|
|
|
|
|
|
|
protected void Awake()
|
|
|
|
|
{
|
2025-11-11 18:23:16 +09:00
|
|
|
if (hierarchyWindow == null)
|
2025-09-26 18:08:07 +09:00
|
|
|
{
|
2025-11-11 18:23:16 +09:00
|
|
|
hierarchyWindow = GetComponentInChildren<HierarchyWindow>();
|
2025-09-26 18:08:07 +09:00
|
|
|
}
|
|
|
|
|
|
2025-11-11 18:23:16 +09:00
|
|
|
if (hierarchyWindow == null)
|
2025-09-26 18:08:07 +09:00
|
|
|
{
|
2025-10-28 20:10:51 +09:00
|
|
|
Debug.LogError("InfiniteScroll component is not assigned or found in Children.");
|
2025-09-26 18:08:07 +09:00
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void Start()
|
|
|
|
|
{
|
|
|
|
|
SetupData();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void SetupData()
|
|
|
|
|
{
|
|
|
|
|
|
2025-11-11 18:23:16 +09:00
|
|
|
if (hierarchyWindow == null) return;
|
2025-09-26 18:08:07 +09:00
|
|
|
|
2025-11-11 18:23:16 +09:00
|
|
|
for (int i = 0; i < 10; i++)
|
2025-09-26 18:08:07 +09:00
|
|
|
{
|
2025-11-11 18:23:16 +09:00
|
|
|
TreeListItemData itemData = new TreeListItemData("Item " + i);
|
2025-09-26 18:08:07 +09:00
|
|
|
|
2025-11-11 18:23:16 +09:00
|
|
|
int len = 5;// i < 5 ? 0 : 2;// Random.Range(1, 5);
|
|
|
|
|
Debug.Log("len: " + len);
|
|
|
|
|
for (int j = 0; j < len; j++)
|
2025-09-26 18:08:07 +09:00
|
|
|
{
|
2025-11-11 18:23:16 +09:00
|
|
|
itemData.AddChild(new TreeListItemData("Item " + i + "." + j));
|
|
|
|
|
int childLen = 3;// Random.Range(0, 3);
|
|
|
|
|
for (int k = 0; k < childLen; k++)
|
|
|
|
|
{
|
|
|
|
|
itemData.Children[j].AddChild(new TreeListItemData("Item " + i + "." + j + "." + k));
|
|
|
|
|
for (int l = 0; l < 2; l++)
|
|
|
|
|
{
|
|
|
|
|
itemData.Children[j].Children[k].AddChild(new TreeListItemData("Item " + i + "." + j + "." + k + "." + l));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
hierarchyWindow.AddItem(itemData);
|
2025-09-26 18:08:07 +09:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 새로고침 버튼 클릭 시 호출됩니다.
|
|
|
|
|
/// 리스트의 모든 데이터를 지우고 SetupData를 다시 호출하여 목록을 갱신합니다.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void Refresh()
|
|
|
|
|
{
|
2025-11-10 20:32:10 +09:00
|
|
|
|
2025-09-26 18:08:07 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 탭 콘텐츠에 데이터를 전달합니다.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="data">전달할 데이터 객체</param>
|
|
|
|
|
public void SetContentData(object? data)
|
|
|
|
|
{
|
|
|
|
|
Debug.Log("TabContentTabComponentList: SetContentData called");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 탭 전환 시 데이터가 있는 경우 전달 되는 데이터. SetContentData 이후 호출 됨
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="data">전달할 데이터 객체</param>
|
|
|
|
|
public void UpdateContentData(object? data)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 닫힐 때 실행되는 로직을 처리합니다.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>비동기 닫기 작업을 나타내는 <see cref="UniTask"/>입니다.</returns>
|
|
|
|
|
public UniTask OnCloseAsync()
|
|
|
|
|
{
|
|
|
|
|
Debug.Log("TabContentTabComponentList: OnClose called");
|
|
|
|
|
return UniTask.CompletedTask;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|