From d2ab30e7a69bfe7efda63ae75812207377917bd3 Mon Sep 17 00:00:00 2001 From: miepzerino <o.skotnik@gmail.com> Date: Sun, 30 Mar 2025 18:50:27 +0000 Subject: [PATCH] Merge branch 'Flexalon-UI-Layouts' into develop --- Assets/Flexalon/Editor/Core/FlexalonEditor.cs | 69 ++++++++++++++++++++++++++++++++++ 1 files changed, 69 insertions(+), 0 deletions(-) diff --git a/Assets/Flexalon/Editor/Core/FlexalonEditor.cs b/Assets/Flexalon/Editor/Core/FlexalonEditor.cs new file mode 100644 index 0000000..4d30adf --- /dev/null +++ b/Assets/Flexalon/Editor/Core/FlexalonEditor.cs @@ -0,0 +1,69 @@ +using UnityEditor; +using UnityEngine; + +namespace Flexalon.Editor +{ + [CustomEditor(typeof(Flexalon))] + public class FlexalonEditor : UnityEditor.Editor + { + private SerializedProperty _updateInEditMode; + private SerializedProperty _updateInPlayMode; + private SerializedProperty _skipInactiveObjects; + private SerializedProperty _inputProvider; + + public static void Create() + { + if (Flexalon.TryGetOrCreate(out var flexalon)) + { + Undo.RegisterCreatedObjectUndo(flexalon.gameObject, "Create Flexalon"); + } + } + + void OnEnable() + { + _updateInEditMode = serializedObject.FindProperty("_updateInEditMode"); + _updateInPlayMode = serializedObject.FindProperty("_updateInPlayMode"); + _skipInactiveObjects = serializedObject.FindProperty("_skipInactiveObjects"); + _inputProvider = serializedObject.FindProperty("_inputProvider"); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + if ((Application.isPlaying && !(target as Flexalon).UpdateInPlayMode) || + (!Application.isPlaying && !(target as Flexalon).UpdateInEditMode)) + { + if (GUILayout.Button("Update")) + { + Undo.RecordObject(target, "Update"); + PrefabUtility.RecordPrefabInstancePropertyModifications(target); + var flexalon = (target as Flexalon); + Flexalon.RecordFrameChanges = true; + flexalon.UpdateDirtyNodes(); + } + } + + if (GUILayout.Button("Force Update")) + { + Undo.RecordObject(target, "Force Update"); + PrefabUtility.RecordPrefabInstancePropertyModifications(target); + var flexalon = (target as Flexalon); + Flexalon.RecordFrameChanges = true; + flexalon.ForceUpdate(); + } + + EditorGUILayout.PropertyField(_updateInEditMode); + EditorGUILayout.PropertyField(_updateInPlayMode); + EditorGUILayout.PropertyField(_skipInactiveObjects); + EditorGUILayout.PropertyField(_inputProvider); + + if (serializedObject.ApplyModifiedProperties()) + { + EditorApplication.QueuePlayerLoopUpdate(); + } + + EditorGUILayout.HelpBox("You should only have one Flexalon component in the scene. If you create a new one, disable and re-enable all flexalon components or restart Unity.", MessageType.Info); + } + } +} \ No newline at end of file -- Gitblit v1.9.3