Files
EnglewoodLAB/Assets/Scripts/UVC/UIToolkit/List/UTKImageListItemData.cs

99 lines
3.0 KiB
C#

#nullable enable
using System;
namespace UVC.UIToolkit
{
/// <summary>
/// UTKImageList의 아이템 데이터 클래스입니다.
/// PrefabGridItemData를 UIToolkit용으로 변환한 클래스입니다.
///
/// <para><b>개요:</b></para>
/// <para>
/// 이미지와 텍스트를 포함하는 리스트 아이템의 데이터를 표현합니다.
/// 드래그 앤 드롭, 검색 필터링 등의 기능을 지원합니다.
/// </para>
///
/// <para><b>사용 예시:</b></para>
/// <code>
/// var itemData = new UTKImageListItemData
/// {
/// externalId = "item-001",
/// itemName = "프리팹 이름",
/// imagePath = "Prefabs/Thumbnails/item001",
/// objectPrefabPath = "Prefabs/Objects/item001"
/// };
/// </code>
/// </summary>
public sealed class UTKImageListItemData : IDisposable
{
#region (Fields)
/// <summary>
/// ListView/TreeView에서 사용하는 내부 고유 ID입니다.
/// UTKImageList.SetData() 호출 시 자동으로 할당됩니다.
/// </summary>
public int id;
/// <summary>
/// 외부 시스템과의 연동을 위한 식별자입니다.
/// 기존 PrefabGridItemData.Id에 해당합니다.
/// </summary>
public string externalId = string.Empty;
/// <summary>
/// UI에 표시될 아이템 이름입니다.
/// 검색 필터링의 대상이 됩니다.
/// </summary>
public string itemName = string.Empty;
/// <summary>
/// 썸네일 이미지의 리소스 경로입니다.
/// Resources 폴더 기준의 상대 경로를 사용합니다.
/// </summary>
public string imagePath = string.Empty;
/// <summary>
/// 연결된 오브젝트 프리팹의 경로입니다.
/// 드래그 앤 드롭 시 인스턴스화할 프리팹을 지정합니다.
/// </summary>
public string objectPrefabPath = string.Empty;
/// <summary>
/// 사용자 정의 태그 또는 키 값입니다.
/// 분류, 필터링 등의 용도로 활용할 수 있습니다.
/// </summary>
public string? tag;
/// <summary>
/// 현재 아이템의 선택 상태입니다.
/// UI와의 동기화에 사용됩니다.
/// </summary>
public bool isSelected;
#endregion
#region IDisposable
private bool _disposed;
/// <summary>
/// 리소스를 해제합니다.
/// 문자열 참조를 정리하여 GC가 수집할 수 있도록 합니다.
/// </summary>
public void Dispose()
{
if (_disposed) return;
_disposed = true;
// 문자열 참조 정리 (GC 힌트)
externalId = string.Empty;
itemName = string.Empty;
imagePath = string.Empty;
objectPrefabPath = string.Empty;
tag = null;
}
#endregion
}
}