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