123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using UnityEditor;
- using UnityEngine;
- namespace ET
- {
- public static class Styles
- {
- private static GUIStyle _sectionHeader;
- private static GUIStyle _sectionContent;
- public static GUIStyle sectionHeader
- {
- get
- {
- if (Styles._sectionHeader == null)
- Styles._sectionHeader = new GUIStyle((GUIStyle) "OL Title");
- return Styles._sectionHeader;
- }
- }
- public static GUIStyle sectionContent
- {
- get
- {
- if (Styles._sectionContent == null)
- {
- Styles._sectionContent = new GUIStyle((GUIStyle) "OL Box");
- Styles._sectionContent.stretchHeight = false;
- }
- return Styles._sectionContent;
- }
- }
- }
- public static class EditorLayout
- {
- private const int DEFAULT_FOLDOUT_MARGIN = 11;
- public static T GetWindow<T>(string title, Vector2 size) where T : EditorWindow
- {
- T window = EditorWindow.GetWindow<T>(true, title);
- window.minSize = window.maxSize = size;
- return window;
- }
- public static Texture2D LoadTexture(string label)
- {
- string[] assets = AssetDatabase.FindAssets(label);
- if (assets.Length != 0)
- {
- string guid = assets[0];
- if (guid != null)
- return AssetDatabase.LoadAssetAtPath<Texture2D>(AssetDatabase.GUIDToAssetPath(guid));
- }
- return (Texture2D) null;
- }
- public static Rect DrawTexture(Texture2D texture)
- {
- if (!((UnityEngine.Object) texture != (UnityEngine.Object) null))
- return new Rect();
- Rect aspectRect = GUILayoutUtility.GetAspectRect((float) ((double) texture.width / (double) texture.height),
- new GUILayoutOption[1] { GUILayout.ExpandWidth(true) });
- GUI.DrawTexture(aspectRect, (Texture) texture, ScaleMode.ScaleAndCrop);
- return aspectRect;
- }
- public static bool ObjectFieldButton(string label, string buttonText)
- {
- EditorGUILayout.BeginHorizontal();
- EditorGUILayout.LabelField(label, new GUILayoutOption[1] { GUILayout.Width(146f) });
- if (buttonText.Length > 24)
- buttonText = "..." + buttonText.Substring(buttonText.Length - 24);
- int num = GUILayout.Button(buttonText, EditorStyles.objectField, new GUILayoutOption[0])? 1 : 0;
- EditorGUILayout.EndHorizontal();
- return num != 0;
- }
- public static string ObjectFieldOpenFolderPanel(string label, string buttonText, string defaultPath)
- {
- if (!EditorLayout.ObjectFieldButton(label, buttonText))
- return (string) null;
- string str = defaultPath ?? "Assets/";
- if (!Directory.Exists(str))
- str = "Assets/";
- return EditorUtility.OpenFolderPanel(label, str, string.Empty).Replace(Directory.GetCurrentDirectory() + "/", string.Empty);
- }
- public static string ObjectFieldOpenFilePanel(string label, string buttonText, string defaultPath)
- {
- if (!EditorLayout.ObjectFieldButton(label, buttonText))
- return (string) null;
- string str = defaultPath ?? "Assets/";
- if (!File.Exists(str))
- str = "Assets/";
- return EditorUtility.OpenFilePanel(label, str, "dll").Replace(Directory.GetCurrentDirectory() + "/", string.Empty);
- }
- public static bool MiniButton(string c)
- {
- return EditorLayout.miniButton(c, EditorStyles.miniButton);
- }
- public static bool MiniButtonLeft(string c)
- {
- return EditorLayout.miniButton(c, EditorStyles.miniButtonLeft);
- }
- public static bool MiniButtonMid(string c)
- {
- return EditorLayout.miniButton(c, EditorStyles.miniButtonMid);
- }
- public static bool MiniButtonRight(string c)
- {
- return EditorLayout.miniButton(c, EditorStyles.miniButtonRight);
- }
- private static bool miniButton(string c, GUIStyle style)
- {
- GUILayoutOption[] guiLayoutOptionArray1;
- if (c.Length != 1)
- guiLayoutOptionArray1 = new GUILayoutOption[0];
- else
- guiLayoutOptionArray1 = new GUILayoutOption[1] { GUILayout.Width(19f) };
- GUILayoutOption[] guiLayoutOptionArray2 = guiLayoutOptionArray1;
- int num = GUILayout.Button(c, style, guiLayoutOptionArray2)? 1 : 0;
- if (num == 0)
- return num != 0;
- GUI.FocusControl((string) null);
- return num != 0;
- }
- public static bool Foldout(bool foldout, string content, int leftMargin = 11)
- {
- return EditorLayout.Foldout(foldout, content, EditorStyles.foldout, leftMargin);
- }
- public static bool Foldout(bool foldout, string content, GUIStyle style, int leftMargin = 11)
- {
- EditorGUILayout.BeginHorizontal();
- GUILayout.Space((float) leftMargin);
- foldout = EditorGUILayout.Foldout(foldout, content, style);
- EditorGUILayout.EndHorizontal();
- return foldout;
- }
- public static string SearchTextField(string searchString)
- {
- bool changed = GUI.changed;
- GUILayout.BeginHorizontal();
- searchString = GUILayout.TextField(searchString, GUI.skin.FindStyle("ToolbarSeachTextField"), new GUILayoutOption[0]);
- if (GUILayout.Button(string.Empty, GUI.skin.FindStyle("ToolbarSeachCancelButton"), new GUILayoutOption[0]))
- searchString = string.Empty;
- GUILayout.EndHorizontal();
- GUI.changed = changed;
- return searchString;
- }
- public static bool MatchesSearchString(string str, string search)
- {
- string[] strArray = search.Split(new char[1] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
- if (strArray.Length != 0)
- return ((IEnumerable<string>) strArray).Any<string>(new Func<string, bool>(str.Contains));
- return true;
- }
- public static bool DrawSectionHeaderToggle(string header, bool value)
- {
- return GUILayout.Toggle(value, header, Styles.sectionHeader, new GUILayoutOption[0]);
- }
- public static void BeginSectionContent()
- {
- EditorGUILayout.BeginVertical(Styles.sectionContent, new GUILayoutOption[0]);
- }
- public static void EndSectionContent()
- {
- EditorGUILayout.EndVertical();
- }
- public static Rect BeginVerticalBox()
- {
- return EditorGUILayout.BeginVertical(GUI.skin.box, new GUILayoutOption[0]);
- }
- public static void EndVerticalBox()
- {
- EditorGUILayout.EndVertical();
- }
- }
- }
|