using UnityEditor; using UnityEngine; namespace SpellBoundAR.Items.Editor { [CustomEditor(typeof(Database), true)] public class DatabaseInspector : UnityEditor.Editor { private Database _database; private void OnEnable() { _database = (Database) target; } public override void OnInspectorGUI() { EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(GUILayout.Height(30)); if (GUILayout.Button("Rebuild", GUILayout.ExpandHeight(true))) { RebuildList(); _database.SortList(); _database.RebuildDictionary(); } if (GUILayout.Button("Log & Copy Data", GUILayout.ExpandHeight(true))) { string data = _database.ToString(); EditorGUIUtility.systemCopyBuffer = data; Debug.Log(data); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); DrawDefaultInspector(); serializedObject.ApplyModifiedProperties(); } private void RebuildList() { _database.Types.Clear(); string[] guids = AssetDatabase.FindAssets($"t:{typeof(ScriptedItemTypeData)}"); for( int i = 0; i < guids.Length; i++ ) { string assetPath = AssetDatabase.GUIDToAssetPath( guids[i] ); ScriptedItemTypeData quest = AssetDatabase.LoadAssetAtPath( assetPath ); if (quest) _database.Types.Add(quest); } EditorUtility.SetDirty(_database); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } } }