using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using UnityEditor;
using UnityEngine;
[assembly: InternalsVisibleTo("Assembly-CSharp-Editor")]
[assembly: InternalsVisibleTo("AmaDev.Tests.Editor")]
namespace Amanotes.Core
{
///
/// Unified settings asset for AmaDev tools.
/// Each subsystem extends this via partial + inner classes.
/// Created from the AmaDev panel — no CreateAssetMenu.
///
internal partial class AmaDevSettings : ScriptableObject
{
private const string DefaultAssetPath = "Assets/AmaDevSettings.asset";
private static AmaDevSettings _instance;
internal static AmaDevSettings Instance
{
get
{
if (_instance != null) return _instance;
_instance = FindInstance();
return _instance;
}
}
internal static void ClearCache() => _instance = null;
private static AmaDevSettings FindInstance()
{
var guids = AssetDatabase.FindAssets("t:AmaDevSettings");
if (guids.Length == 0) return null;
var path = AssetDatabase.GUIDToAssetPath(guids[0]);
return AssetDatabase.LoadAssetAtPath(path);
}
internal static AmaDevSettings GetOrCreate()
{
var instance = Instance;
if (instance != null) return instance;
instance = CreateInstance();
AssetDatabase.CreateAsset(instance, AssetDatabase.GenerateUniqueAssetPath(DefaultAssetPath));
AssetDatabase.SaveAssets();
_instance = instance;
return instance;
}
internal void MarkDirty()
{
EditorUtility.SetDirty(this);
}
}
}