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