Files
EnglewoodLAB/Assets/Scripts/Studio/Config/StudioUTKImageIcons.cs

353 lines
17 KiB
C#

// <auto-generated>
// 이 파일은 UTKImageIconsGenerator에 의해 자동 생성되었습니다.
// 직접 수정하지 마세요. Tools > UTK > Image Icons Generator 메뉴로 재생성하세요.
// Source: Assets/Resources/Studio/Images
// </auto-generated>
#nullable enable
using System.Collections.Generic;
using System.Threading;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace UVC.Studio.Config
{
/// <summary>
/// 이미지 아이콘 리소스 경로 상수 클래스입니다.
/// 총 34개의 아이콘을 포함합니다.
/// </summary>
/// <example>
/// <code>
/// // 상수로 리소스 경로 사용
/// string path = StudioUTKImageIcons.Home;
///
/// // 동기 Sprite 로드 (캐싱됨)
/// Sprite sprite = StudioUTKImageIcons.LoadSprite(StudioUTKImageIcons.Home);
///
/// // 비동기 Sprite 로드 (UniTask, 캐싱됨)
/// Sprite? sprite = await StudioUTKImageIcons.LoadSpriteAsync(StudioUTKImageIcons.Home, cancellationToken);
///
/// // 동기 Texture2D 로드 (캐싱됨)
/// Texture2D texture = StudioUTKImageIcons.LoadTexture(StudioUTKImageIcons.Settings);
///
/// // 비동기 Texture2D 로드 (UniTask, 캐싱됨)
/// Texture2D? texture = await StudioUTKImageIcons.LoadTextureAsync(StudioUTKImageIcons.Settings, cancellationToken);
///
/// // 이름으로 Sprite 로드
/// Sprite icon = StudioUTKImageIcons.LoadSpriteByName("home");
///
/// // 이름으로 비동기 Sprite 로드
/// Sprite? icon = await StudioUTKImageIcons.LoadSpriteByNameAsync("home", cancellationToken);
///
/// // 이름으로 경로 조회
/// string iconPath = StudioUTKImageIcons.GetPath("settings");
///
/// // 아이콘 존재 여부 확인
/// if (StudioUTKImageIcons.HasIcon("search")) { }
///
/// // 전체 아이콘 이름 순회
/// foreach (var name in StudioUTKImageIcons.GetAllIconNames()) { }
///
/// // 캐시 클리어
/// StudioUTKImageIcons.ClearCache();
/// </code>
/// </example>
/// <remarks>
/// <para><b>UXML에서 사용하기:</b></para>
/// <para>UXML에서 이미지 아이콘을 사용하려면 USS에서 background-image를 설정합니다.</para>
/// <code>
/// /* USS 파일 */
/// .my-icon {
/// width: 24px;
/// height: 24px;
/// background-image: resource('UIToolkit/Images/icon_setting_22');
/// }
/// </code>
/// <code>
/// <!-- UXML 파일 -->
/// <ui:VisualElement class="my-icon" />
/// </code>
/// <para><b>C# 코드에서 UXML 요소에 이미지 적용:</b></para>
/// <code>
/// var iconElement = root.Q<VisualElement>("my-icon");
/// var texture = StudioUTKImageIcons.LoadTextureByName("icon_setting_22");
/// iconElement.style.backgroundImage = new StyleBackground(texture);
/// </code>
/// <para><b>Image 요소에서 사용:</b></para>
/// <code>
/// var image = root.Q<Image>("my-image");
/// image.sprite = StudioUTKImageIcons.LoadSpriteByName("btn_close_16");
/// </code>
/// </remarks>
public static class StudioUTKImageIcons
{
/// <summary>logo.png</summary>
public const string Logo = "Studio/Images/logo";
/// <summary>tail_btn_property_close_40.png</summary>
public const string TailBtnPropertyClose40 = "Studio/Images/tail_btn_property_close_40";
/// <summary>tail_btn_property_open_40.png</summary>
public const string TailBtnPropertyOpen40 = "Studio/Images/tail_btn_property_open_40";
/// <summary>toolbar_icon_align_40.png</summary>
public const string ToolbarIconAlign40 = "Studio/Images/toolbar_icon_align_40";
/// <summary>toolbar_icon_align_hc_40.png</summary>
public const string ToolbarIconAlignHc40 = "Studio/Images/toolbar_icon_align_hc_40";
/// <summary>toolbar_icon_align_he_40.png</summary>
public const string ToolbarIconAlignHe40 = "Studio/Images/toolbar_icon_align_he_40";
/// <summary>toolbar_icon_align_hl_40.png</summary>
public const string ToolbarIconAlignHl40 = "Studio/Images/toolbar_icon_align_hl_40";
/// <summary>toolbar_icon_align_hr_40.png</summary>
public const string ToolbarIconAlignHr40 = "Studio/Images/toolbar_icon_align_hr_40";
/// <summary>toolbar_icon_align_vb_40.png</summary>
public const string ToolbarIconAlignVb40 = "Studio/Images/toolbar_icon_align_vb_40";
/// <summary>toolbar_icon_align_ve_40.png</summary>
public const string ToolbarIconAlignVe40 = "Studio/Images/toolbar_icon_align_ve_40";
/// <summary>toolbar_icon_align_vm_40.png</summary>
public const string ToolbarIconAlignVm40 = "Studio/Images/toolbar_icon_align_vm_40";
/// <summary>toolbar_icon_align_vt_40.png</summary>
public const string ToolbarIconAlignVt40 = "Studio/Images/toolbar_icon_align_vt_40";
/// <summary>toolbar_icon_arc_off_40.png</summary>
public const string ToolbarIconArcOff40 = "Studio/Images/toolbar_icon_arc_off_40";
/// <summary>toolbar_icon_arc_on_40.png</summary>
public const string ToolbarIconArcOn40 = "Studio/Images/toolbar_icon_arc_on_40";
/// <summary>toolbar_icon_delete_40.png</summary>
public const string ToolbarIconDelete40 = "Studio/Images/toolbar_icon_delete_40";
/// <summary>toolbar_icon_duplicate_40.png</summary>
public const string ToolbarIconDuplicate40 = "Studio/Images/toolbar_icon_duplicate_40";
/// <summary>toolbar_icon_guide_40.png</summary>
public const string ToolbarIconGuide40 = "Studio/Images/toolbar_icon_guide_40";
/// <summary>toolbar_icon_link_off_40.png</summary>
public const string ToolbarIconLinkOff40 = "Studio/Images/toolbar_icon_link_off_40";
/// <summary>toolbar_icon_link_on_40.png</summary>
public const string ToolbarIconLinkOn40 = "Studio/Images/toolbar_icon_link_on_40";
/// <summary>toolbar_icon_move_off_40.png</summary>
public const string ToolbarIconMoveOff40 = "Studio/Images/toolbar_icon_move_off_40";
/// <summary>toolbar_icon_move_on_40.png</summary>
public const string ToolbarIconMoveOn40 = "Studio/Images/toolbar_icon_move_on_40";
/// <summary>toolbar_icon_node_off_40.png</summary>
public const string ToolbarIconNodeOff40 = "Studio/Images/toolbar_icon_node_off_40";
/// <summary>toolbar_icon_node_on_40.png</summary>
public const string ToolbarIconNodeOn40 = "Studio/Images/toolbar_icon_node_on_40";
/// <summary>toolbar_icon_redo_40.png</summary>
public const string ToolbarIconRedo40 = "Studio/Images/toolbar_icon_redo_40";
/// <summary>toolbar_icon_rotate_off_40.png</summary>
public const string ToolbarIconRotateOff40 = "Studio/Images/toolbar_icon_rotate_off_40";
/// <summary>toolbar_icon_rotate_on_40.png</summary>
public const string ToolbarIconRotateOn40 = "Studio/Images/toolbar_icon_rotate_on_40";
/// <summary>toolbar_icon_save_off_40.png</summary>
public const string ToolbarIconSaveOff40 = "Studio/Images/toolbar_icon_save_off_40";
/// <summary>toolbar_icon_save_on_40.png</summary>
public const string ToolbarIconSaveOn40 = "Studio/Images/toolbar_icon_save_on_40";
/// <summary>toolbar_icon_scale_off_40.png</summary>
public const string ToolbarIconScaleOff40 = "Studio/Images/toolbar_icon_scale_off_40";
/// <summary>toolbar_icon_scale_on_40.png</summary>
public const string ToolbarIconScaleOn40 = "Studio/Images/toolbar_icon_scale_on_40";
/// <summary>toolbar_icon_select_off_40.png</summary>
public const string ToolbarIconSelectOff40 = "Studio/Images/toolbar_icon_select_off_40";
/// <summary>toolbar_icon_select_on_40.png</summary>
public const string ToolbarIconSelectOn40 = "Studio/Images/toolbar_icon_select_on_40";
/// <summary>toolbar_icon_snap_40.png</summary>
public const string ToolbarIconSnap40 = "Studio/Images/toolbar_icon_snap_40";
/// <summary>toolbar_icon_undo_40.png</summary>
public const string ToolbarIconUndo40 = "Studio/Images/toolbar_icon_undo_40";
#region Lookup & Load
private static readonly Dictionary<string, string> _pathsByName = new()
{
["logo"] = "Studio/Images/logo",
["tail_btn_property_close_40"] = "Studio/Images/tail_btn_property_close_40",
["tail_btn_property_open_40"] = "Studio/Images/tail_btn_property_open_40",
["toolbar_icon_align_40"] = "Studio/Images/toolbar_icon_align_40",
["toolbar_icon_align_hc_40"] = "Studio/Images/toolbar_icon_align_hc_40",
["toolbar_icon_align_he_40"] = "Studio/Images/toolbar_icon_align_he_40",
["toolbar_icon_align_hl_40"] = "Studio/Images/toolbar_icon_align_hl_40",
["toolbar_icon_align_hr_40"] = "Studio/Images/toolbar_icon_align_hr_40",
["toolbar_icon_align_vb_40"] = "Studio/Images/toolbar_icon_align_vb_40",
["toolbar_icon_align_ve_40"] = "Studio/Images/toolbar_icon_align_ve_40",
["toolbar_icon_align_vm_40"] = "Studio/Images/toolbar_icon_align_vm_40",
["toolbar_icon_align_vt_40"] = "Studio/Images/toolbar_icon_align_vt_40",
["toolbar_icon_arc_off_40"] = "Studio/Images/toolbar_icon_arc_off_40",
["toolbar_icon_arc_on_40"] = "Studio/Images/toolbar_icon_arc_on_40",
["toolbar_icon_delete_40"] = "Studio/Images/toolbar_icon_delete_40",
["toolbar_icon_duplicate_40"] = "Studio/Images/toolbar_icon_duplicate_40",
["toolbar_icon_guide_40"] = "Studio/Images/toolbar_icon_guide_40",
["toolbar_icon_link_off_40"] = "Studio/Images/toolbar_icon_link_off_40",
["toolbar_icon_link_on_40"] = "Studio/Images/toolbar_icon_link_on_40",
["toolbar_icon_move_off_40"] = "Studio/Images/toolbar_icon_move_off_40",
["toolbar_icon_move_on_40"] = "Studio/Images/toolbar_icon_move_on_40",
["toolbar_icon_node_off_40"] = "Studio/Images/toolbar_icon_node_off_40",
["toolbar_icon_node_on_40"] = "Studio/Images/toolbar_icon_node_on_40",
["toolbar_icon_redo_40"] = "Studio/Images/toolbar_icon_redo_40",
["toolbar_icon_rotate_off_40"] = "Studio/Images/toolbar_icon_rotate_off_40",
["toolbar_icon_rotate_on_40"] = "Studio/Images/toolbar_icon_rotate_on_40",
["toolbar_icon_save_off_40"] = "Studio/Images/toolbar_icon_save_off_40",
["toolbar_icon_save_on_40"] = "Studio/Images/toolbar_icon_save_on_40",
["toolbar_icon_scale_off_40"] = "Studio/Images/toolbar_icon_scale_off_40",
["toolbar_icon_scale_on_40"] = "Studio/Images/toolbar_icon_scale_on_40",
["toolbar_icon_select_off_40"] = "Studio/Images/toolbar_icon_select_off_40",
["toolbar_icon_select_on_40"] = "Studio/Images/toolbar_icon_select_on_40",
["toolbar_icon_snap_40"] = "Studio/Images/toolbar_icon_snap_40",
["toolbar_icon_undo_40"] = "Studio/Images/toolbar_icon_undo_40",
};
private static readonly Dictionary<string, Sprite?> _spriteCache = new();
private static readonly Dictionary<string, Texture2D?> _textureCache = new();
/// <summary>
/// 아이콘 이름으로 리소스 경로를 조회합니다.
/// </summary>
/// <param name="iconName">아이콘 파일명 (확장자 제외)</param>
/// <returns>리소스 경로, 없으면 빈 문자열</returns>
public static string GetPath(string iconName)
{
return _pathsByName.TryGetValue(iconName, out var path) ? path : string.Empty;
}
/// <summary>
/// 아이콘이 존재하는지 확인합니다.
/// </summary>
public static bool HasIcon(string iconName) => _pathsByName.ContainsKey(iconName);
/// <summary>
/// 모든 아이콘 이름 목록을 반환합니다.
/// </summary>
public static IEnumerable<string> GetAllIconNames() => _pathsByName.Keys;
/// <summary>
/// 리소스 경로로 아이콘 이름을 조회합니다.
/// </summary>
/// <param name="resourcePath">리소스 경로 (예: Icons/Home)</param>
/// <returns>아이콘 이름, 없으면 빈 문자열</returns>
public static string GetIconName(string resourcePath)
{
foreach (var kvp in _pathsByName)
{
if (kvp.Value == resourcePath) return kvp.Key;
}
return string.Empty;
}
/// <summary>
/// 전체 아이콘 수를 반환합니다.
/// </summary>
public static int Count => 34;
/// <summary>
/// 리소스 경로로 Sprite를 동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="resourcePath">리소스 경로 (예: Icons/Home)</param>
public static Sprite? LoadSprite(string resourcePath)
{
if (_spriteCache.TryGetValue(resourcePath, out var cached))
return cached;
var sprite = Resources.Load<Sprite>(resourcePath);
_spriteCache[resourcePath] = sprite;
return sprite;
}
/// <summary>
/// 리소스 경로로 Sprite를 비동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="resourcePath">리소스 경로 (예: Icons/Home)</param>
/// <param name="ct">취소 토큰</param>
public static async UniTask<Sprite?> LoadSpriteAsync(string resourcePath, CancellationToken ct = default)
{
if (_spriteCache.TryGetValue(resourcePath, out var cached))
return cached;
var request = Resources.LoadAsync<Sprite>(resourcePath);
await request.ToUniTask(cancellationToken: ct);
var sprite = request.asset as Sprite;
_spriteCache[resourcePath] = sprite;
return sprite;
}
/// <summary>
/// 리소스 경로로 Texture2D를 동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="resourcePath">리소스 경로 (예: Icons/Home)</param>
public static Texture2D? LoadTexture(string resourcePath)
{
if (_textureCache.TryGetValue(resourcePath, out var cached))
return cached;
var texture = Resources.Load<Texture2D>(resourcePath);
_textureCache[resourcePath] = texture;
return texture;
}
/// <summary>
/// 리소스 경로로 Texture2D를 비동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="resourcePath">리소스 경로 (예: Icons/Home)</param>
/// <param name="ct">취소 토큰</param>
public static async UniTask<Texture2D?> LoadTextureAsync(string resourcePath, CancellationToken ct = default)
{
if (_textureCache.TryGetValue(resourcePath, out var cached))
return cached;
var request = Resources.LoadAsync<Texture2D>(resourcePath);
await request.ToUniTask(cancellationToken: ct);
var texture = request.asset as Texture2D;
_textureCache[resourcePath] = texture;
return texture;
}
/// <summary>
/// 아이콘 이름으로 Sprite를 동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="iconName">아이콘 파일명 (확장자 제외)</param>
public static Sprite? LoadSpriteByName(string iconName)
{
var path = GetPath(iconName);
return string.IsNullOrEmpty(path) ? null : LoadSprite(path);
}
/// <summary>
/// 아이콘 이름으로 Sprite를 비동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="iconName">아이콘 파일명 (확장자 제외)</param>
/// <param name="ct">취소 토큰</param>
public static async UniTask<Sprite?> LoadSpriteByNameAsync(string iconName, CancellationToken ct = default)
{
var path = GetPath(iconName);
return string.IsNullOrEmpty(path) ? null : await LoadSpriteAsync(path, ct);
}
/// <summary>
/// 아이콘 이름으로 Texture2D를 동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="iconName">아이콘 파일명 (확장자 제외)</param>
public static Texture2D? LoadTextureByName(string iconName)
{
var path = GetPath(iconName);
return string.IsNullOrEmpty(path) ? null : LoadTexture(path);
}
/// <summary>
/// 아이콘 이름으로 Texture2D를 비동기로 로드합니다. (캐싱됨)
/// </summary>
/// <param name="iconName">아이콘 파일명 (확장자 제외)</param>
/// <param name="ct">취소 토큰</param>
public static async UniTask<Texture2D?> LoadTextureByNameAsync(string iconName, CancellationToken ct = default)
{
var path = GetPath(iconName);
return string.IsNullOrEmpty(path) ? null : await LoadTextureAsync(path, ct);
}
/// <summary>
/// 캐시를 클리어합니다.
/// </summary>
public static void ClearCache()
{
_spriteCache.Clear();
_textureCache.Clear();
}
#endregion
}
}