using UnityEngine;
using UnityEditor; // Обязательная библиотека для редактора

// Говорим Unity, что этот скрипт меняет инспектор для файлов AtlasStyleSO
[CustomEditor(typeof(AtlasStyleSO))]
public class AtlasStyleSOEditor : Editor
{
    // Эта функция включает то самое окно превью внизу
    public override bool HasPreviewGUI()
    {
        return true; 
    }

    // Название вкладки превью
    public override GUIContent GetPreviewTitle()
    {
        return new GUIContent("Atlas Preview");
    }

    // Здесь мы рисуем саму картинку
    public override void OnPreviewGUI(Rect r, GUIStyle background)
    {
        // Получаем доступ к нашему ScriptableObject
        AtlasStyleSO style = (AtlasStyleSO)target;

        if (style.previewAtlas == null)
        {
            // Если текстуру не назначили, пишем подсказку
            GUIStyle textStyle = new GUIStyle() { alignment = TextAnchor.MiddleCenter };
            textStyle.normal.textColor = Color.gray;
            GUI.Label(r, "Assign Preview Atlas to see preview", textStyle);
            return;
        }

        // Превращаем наш Vector4 (Tiling/Offset) в квадрат (Rect) для отрисовки.
        // В Unity Rect принимает (Offset X, Offset Y, Tiling X, Tiling Y)
        Rect texCoords = new Rect(
            style.atlasRect.z, 
            style.atlasRect.w, 
            style.atlasRect.x, 
            style.atlasRect.y
        );

        // Рисуем текстуру с применением координат!
        GUI.DrawTextureWithTexCoords(r, style.previewAtlas, texCoords);
    }
}