#if UNITY_EDITOR using UnityEditor; using UnityEditorInternal; using UnityEngine; using RR.Common.Settings; namespace RR.Common.InspectorOverrides { [CustomEditor(typeof(SettingsDatabase))] public class SettingsDatabaseEditor : Editor { private ReorderableList _list; private void OnEnable() { var entriesProp = serializedObject.FindProperty("entries"); _list = new ReorderableList(serializedObject, entriesProp, true, true, true, true); _list.drawHeaderCallback = rect => EditorGUI.LabelField(rect, "Settings Entries"); _list.elementHeightCallback = index => { var element = entriesProp.GetArrayElementAtIndex(index); return EditorGUI.GetPropertyHeight(element, true) + 8f; }; _list.drawElementCallback = (rect, index, isActive, isFocused) => { var element = entriesProp.GetArrayElementAtIndex(index); rect.y += 4f; rect.height -= 4f; EditorGUI.PropertyField(rect, element, GUIContent.none, true); }; } public override void OnInspectorGUI() { serializedObject.Update(); _list.DoLayoutList(); serializedObject.ApplyModifiedProperties(); } } } #endif