public override void Focus() { base.Focus(); if (databaseCrud?.database == null) { var dbPath = EditorPrefs.GetString(databaseSaveKey); var db = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(dbPath) as IDatabase <T>; if (db != null) { databaseCrud = new DatabaseCollection <T>(db); } } ValidateItems(); }
protected virtual void DrawDatabasePicker() { GUILayout.Space(40); EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); EditorGUILayout.BeginVertical(GUILayout.Width(600)); EditorGUILayout.LabelField("Select a database to edit", General2.Editors.EditorStyles.titleStyle); GUILayout.Space(20); EditorGUILayout.BeginVertical(Devdog.General2.Editors.EditorStyles.boxStyle); EditorGUILayout.LabelField("Found (local) databases"); foreach (var db in GetProjectDatabases()) { var asset = db as UnityEngine.Object; var dbName = db.ToString(); if (asset != null) { dbName = AssetDatabase.GetAssetPath(asset); } if (GUILayout.Button("Select: " + dbName)) { databaseCrud = new DatabaseCollection <T>(db); } } EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(Devdog.General2.Editors.EditorStyles.boxStyle); EditorGUILayout.LabelField("Manual selection"); databaseCrud = databaseCrud ?? new DatabaseCollection <T>(); databaseCrud.database = (IDatabase <T>)UnityEditor.EditorGUILayout.ObjectField(databaseCrud.database as UnityEngine.Object, typeof(IDatabase <T>), false); EditorGUILayout.EndVertical(); EditorGUILayout.EndVertical(); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); GUILayout.Space(40); }