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); } } }