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/Windows/WindowUtil.cs | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 119 insertions(+), 0 deletions(-) diff --git a/Assets/Flexalon/Editor/Windows/WindowUtil.cs b/Assets/Flexalon/Editor/Windows/WindowUtil.cs new file mode 100644 index 0000000..bcef1f3 --- /dev/null +++ b/Assets/Flexalon/Editor/Windows/WindowUtil.cs @@ -0,0 +1,119 @@ +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Text.RegularExpressions; +using UnityEngine; +using UnityEditor; + +namespace Flexalon.Editor +{ + internal static class WindowUtil + { + private static readonly string _projectMeta = "5325f2ad02f14e242b86eb4bb0fcb5ee"; + + private static string _version; + + private static Texture2D _flexalonIcon; + private static Texture2D _proximaIcon; + private static Texture2D _copilotIcon; + + public static void CenterOnEditor(EditorWindow window) + { +#if UNITY_2020_1_OR_NEWER + var main = EditorGUIUtility.GetMainWindowPosition(); + var pos = window.position; + float w = (main.width - pos.width) * 0.5f; + float h = (main.height - pos.height) * 0.5f; + pos.x = main.x + w; + pos.y = main.y + h; + window.position = pos; +#endif + } + + public static string GetVersion() + { + if (_version == null) + { + var version = AssetDatabase.GUIDToAssetPath(_projectMeta); + var lines = File.ReadAllText(version); + var rx = new Regex("\"version\": \"(.*?)\""); + _version = rx.Match(lines).Groups[1].Value; + } + + return _version; + } + + public static bool DrawProximaButton(float width, GUIStyle style) + { + if (!_proximaIcon) + { + var proximaIconPath = AssetDatabase.GUIDToAssetPath("34efc6ae99ff42f438800428a52c50b5"); + _proximaIcon = AssetDatabase.LoadAssetAtPath<Texture2D>(proximaIconPath); + } + + return GUILayout.Button(_proximaIcon, style, GUILayout.Width(width), GUILayout.Height(width * 0.337f)); + } + + public static bool DrawCopilotButton(float width, GUIStyle style) + { + if (!_copilotIcon) + { + var iconPath = AssetDatabase.GUIDToAssetPath("96aaefe6c810ba6469d7e7ce04421e94"); + _copilotIcon = AssetDatabase.LoadAssetAtPath<Texture2D>(iconPath); + } + + return GUILayout.Button(_copilotIcon, style, GUILayout.Width(width), GUILayout.Height(width * 0.4023f)); + } + + public static List<string> GetInstalledLayouts() + { + var layouts = new List<string>(); + if (Assembly.GetAssembly(typeof(Flexalon)).GetType("Flexalon.FlexalonAlignLayout") != null) + { + layouts.Add("align"); + } + + if (Assembly.GetAssembly(typeof(Flexalon)).GetType("Flexalon.FlexalonCircleLayout") != null) + { + layouts.Add("circle"); + } + + if (Assembly.GetAssembly(typeof(Flexalon)).GetType("Flexalon.FlexalonConstraint") != null) + { + layouts.Add("constraint"); + } + + if (Assembly.GetAssembly(typeof(Flexalon)).GetType("Flexalon.FlexalonCurveLayout") != null) + { + layouts.Add("curve"); + } + + if (Assembly.GetAssembly(typeof(Flexalon)).GetType("Flexalon.FlexalonFlexibleLayout") != null) + { + layouts.Add("flexible"); + } + + if (Assembly.GetAssembly(typeof(Flexalon)).GetType("Flexalon.FlexalonGridLayout") != null) + { + layouts.Add("grid"); + } + + if (Assembly.GetAssembly(typeof(Flexalon)).GetType("Flexalon.FlexalonRandomLayout") != null) + { + layouts.Add("random"); + } + + if (Assembly.GetAssembly(typeof(Flexalon)).GetType("Flexalon.FlexalonShapeLayout") != null) + { + layouts.Add("shape"); + } + + return layouts; + } + + public static bool AllLayoutsInstalled() + { + return GetInstalledLayouts().Count == 8; + } + } +} \ No newline at end of file -- Gitblit v1.9.3