50 lines
1.6 KiB
C#
50 lines
1.6 KiB
C#
#nullable enable
|
|
using System;
|
|
using UnityEngine;
|
|
using UVC.UI.List.Tree;
|
|
|
|
namespace SHI.modal
|
|
{
|
|
public class ModelDetailView: MonoBehaviour
|
|
{
|
|
/// <summary>
|
|
/// 모델 뷰 내에서 항목이 선택되었을 때 알림.
|
|
/// 외부에서 구독하여 리스트/차트를 동기화합니다.
|
|
/// </summary>
|
|
public Action<TreeListItemData>? OnItemSelected;
|
|
|
|
private TreeListItemData? _focused;
|
|
|
|
/// <summary>
|
|
/// 트리 아이템에 해당하는 모델 요소를 강조하거나 카메라를 이동합니다.
|
|
/// 실제 구현은 프로젝트 요구에 맞게 교체하세요.
|
|
/// </summary>
|
|
public void FocusItem(TreeListItemData data)
|
|
{
|
|
if (data == null) return;
|
|
_focused = data;
|
|
// TODO: 실제 GLTF/모델에서 data에 해당하는 노드를 찾아 강조/프레임 인
|
|
// 디버그 표시로 대체
|
|
Debug.Log($"ModelDetailView.FocusItem: {data.Name}");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 주어진 이름에 해당하는 항목을 강조합니다.
|
|
/// </summary>
|
|
public void FocusItemName(string name)
|
|
{
|
|
if (string.IsNullOrEmpty(name)) return;
|
|
var data = new TreeListItemData(name);
|
|
FocusItem(data);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 모델에서 사용자가 어떤 요소를 클릭했을 때 외부로 통지하려면 이 메서드를 호출하세요.
|
|
/// </summary>
|
|
public void RaiseSelected(TreeListItemData data)
|
|
{
|
|
OnItemSelected?.Invoke(data);
|
|
}
|
|
}
|
|
}
|