99 lines
3.0 KiB
C#
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
|
|
}
|
|
}
|