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/FlexalonComponentEditor.cs |   75 +++++++++++++++++++++++++++++++++++++
 1 files changed, 75 insertions(+), 0 deletions(-)

diff --git a/Assets/Flexalon/Editor/Core/FlexalonComponentEditor.cs b/Assets/Flexalon/Editor/Core/FlexalonComponentEditor.cs
new file mode 100644
index 0000000..12c5b1d
--- /dev/null
+++ b/Assets/Flexalon/Editor/Core/FlexalonComponentEditor.cs
@@ -0,0 +1,75 @@
+using UnityEditor;
+using UnityEngine;
+
+namespace Flexalon.Editor
+{
+    [CustomEditor(typeof(FlexalonComponent)), CanEditMultipleObjects]
+    public class FlexalonComponentEditor : UnityEditor.Editor
+    {
+        public static void Create<T>(string name, Object context) where T : MonoBehaviour
+        {
+            FlexalonEditor.Create();
+            var go = new GameObject(name);
+            Undo.RegisterCreatedObjectUndo(go, "Create " + name);
+
+            if (context is GameObject)
+            {
+                go.transform.SetParent((context as GameObject).transform, false);
+            }
+
+            Flexalon.AddComponent<T>(go);
+            Selection.activeGameObject = go;
+        }
+
+        protected void ForceUpdateButton()
+        {
+            if (GUILayout.Button("Force Update"))
+            {
+                foreach (var target in targets)
+                {
+                    ForceUpdate(target as FlexalonComponent);
+                }
+            }
+        }
+
+        protected void ApplyModifiedProperties()
+        {
+            if (serializedObject.ApplyModifiedProperties())
+            {
+                foreach (var target in targets)
+                {
+                    Record(target as FlexalonComponent);
+                    (target as FlexalonComponent).MarkDirty();
+                }
+
+                Flexalon.GetOrCreate().UpdateDirtyNodes();
+            }
+        }
+
+        protected void Record(FlexalonComponent script)
+        {
+            Undo.RecordObject(script, "Record Component Edit");
+            PrefabUtility.RecordPrefabInstancePropertyModifications(script);
+
+            if (script.Node != null && script.Node.Result)
+            {
+                Undo.RecordObject(script.Node.Result, "Record Component Edit");
+                PrefabUtility.RecordPrefabInstancePropertyModifications(script.Node.Result);
+            }
+
+            Flexalon.RecordFrameChanges = true;
+        }
+
+        protected void MarkDirty(FlexalonComponent script)
+        {
+            script.MarkDirty();
+            Flexalon.GetOrCreate().UpdateDirtyNodes();
+        }
+
+        protected void ForceUpdate(FlexalonComponent script)
+        {
+            Record(script);
+            script.ForceUpdate();
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3