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/Layouts/FlexalonGridLayoutEditor.cs | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 104 insertions(+), 0 deletions(-) diff --git a/Assets/Flexalon/Editor/Layouts/FlexalonGridLayoutEditor.cs b/Assets/Flexalon/Editor/Layouts/FlexalonGridLayoutEditor.cs new file mode 100644 index 0000000..75746bb --- /dev/null +++ b/Assets/Flexalon/Editor/Layouts/FlexalonGridLayoutEditor.cs @@ -0,0 +1,104 @@ +using UnityEditor; +using UnityEngine; + +namespace Flexalon.Editor +{ + [CustomEditor(typeof(FlexalonGridLayout)), CanEditMultipleObjects] + public class FlexalonGridLayoutEditor : FlexalonComponentEditor + { + private SerializedProperty _cellType; + private SerializedProperty _columns; + private SerializedProperty _rows; + private SerializedProperty _layers; + private SerializedProperty _columnDirection; + private SerializedProperty _layerDirection; + private SerializedProperty _rowDirection; + private SerializedProperty _rowSizeType; + private SerializedProperty _rowSize; + private SerializedProperty _columnSizeType; + private SerializedProperty _columnSize; + private SerializedProperty _layerSizeType; + private SerializedProperty _layerSize; + private SerializedProperty _columnSpacing; + private SerializedProperty _rowSpacing; + private SerializedProperty _layerSpacing; + private SerializedProperty _horizontalAlign; + private SerializedProperty _verticalAlign; + private SerializedProperty _depthAlign; + + private GUIContent _rowSizeLabel; + private GUIContent _columnSizeLabel; + private GUIContent _layerSizeLabel; + + [MenuItem("GameObject/Flexalon/Grid Layout")] + public static void Create(MenuCommand command) + { + FlexalonComponentEditor.Create<FlexalonGridLayout>("Grid Layout", command.context); + } + + void OnEnable() + { + _cellType = serializedObject.FindProperty("_cellType"); + _columns = serializedObject.FindProperty("_columns"); + _rows = serializedObject.FindProperty("_rows"); + _layers = serializedObject.FindProperty("_layers"); + _columnDirection = serializedObject.FindProperty("_columnDirection"); + _rowDirection = serializedObject.FindProperty("_rowDirection"); + _layerDirection = serializedObject.FindProperty("_layerDirection"); + _rowSizeType = serializedObject.FindProperty("_rowSizeType"); + _rowSize = serializedObject.FindProperty("_rowSize"); + _columnSizeType = serializedObject.FindProperty("_columnSizeType"); + _columnSize = serializedObject.FindProperty("_columnSize"); + _layerSizeType = serializedObject.FindProperty("_layerSizeType"); + _layerSize = serializedObject.FindProperty("_layerSize"); + _columnSpacing = serializedObject.FindProperty("_columnSpacing"); + _rowSpacing = serializedObject.FindProperty("_rowSpacing"); + _layerSpacing = serializedObject.FindProperty("_layerSpacing"); + _horizontalAlign = serializedObject.FindProperty("_horizontalAlign"); + _verticalAlign = serializedObject.FindProperty("_verticalAlign"); + _depthAlign = serializedObject.FindProperty("_depthAlign"); + _rowSizeLabel = new GUIContent("Row Size"); + _columnSizeLabel = new GUIContent("Column Size"); + _layerSizeLabel = new GUIContent("Layer Size"); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + ForceUpdateButton(); + + SerializedObject so = serializedObject; + EditorGUILayout.PropertyField(_cellType); + EditorGUILayout.PropertyField(_columns); + EditorGUILayout.PropertyField(_rows); + EditorGUILayout.PropertyField(_layers); + EditorGUILayout.PropertyField(_columnDirection); + EditorGUILayout.PropertyField(_rowDirection); + EditorGUILayout.PropertyField(_layerDirection); + CreateSizeProperty(_columnSizeType, _columnSize, _columnSizeLabel); + CreateSizeProperty(_rowSizeType, _rowSize, _rowSizeLabel); + CreateSizeProperty(_layerSizeType, _layerSize, _layerSizeLabel); + EditorGUILayout.PropertyField(_columnSpacing); + EditorGUILayout.PropertyField(_rowSpacing); + EditorGUILayout.PropertyField(_layerSpacing); + EditorGUILayout.PropertyField(_horizontalAlign); + EditorGUILayout.PropertyField(_verticalAlign); + EditorGUILayout.PropertyField(_depthAlign); + ApplyModifiedProperties(); + } + + private void CreateSizeProperty(SerializedProperty typeProperty, SerializedProperty sizeProperty, GUIContent label) + { + EditorGUILayout.BeginHorizontal(); + bool showLabel = true; + if (typeProperty.enumValueIndex == (int)FlexalonGridLayout.CellSizeTypes.Fixed) + { + showLabel = false; + EditorGUILayout.PropertyField(sizeProperty, label, true); + } + + EditorGUILayout.PropertyField(typeProperty, showLabel ? label : GUIContent.none, true); + EditorGUILayout.EndHorizontal(); + } + } +} \ No newline at end of file -- Gitblit v1.9.3