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