123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- using System;
- using UnityEditor;
- using UnityEngine;
- namespace HQFPSWeapons
- {
- public static class EditorGUICustom
- {
- public static event Action OneSecondPassed;
- private static double m_OneSecondTimer;
- public static GUIStyle TitleLabel { get; private set; }
- public static GUIStyle CenteredMiniLabel { get; private set; }
- public static GUIStyle CenteredBoldMiniLabel { get; private set; }
- public static GUIStyle MiniGreyLabel { get; private set; }
- public static GUIStyle BoldMiniGreyLabel { get; private set; }
- public static Color HighlightColor1 { get; private set; }
- public static Color HighlightColor2 { get; private set; }
- public static readonly Color SeparatorColor = EditorGUIUtility.isProSkin ? new Color(0.157f, 0.157f, 0.157f) : new Color(0.5f, 0.5f, 0.5f);
- private static GUIStyle m_SeparatorStyle;
-
- static EditorGUICustom()
- {
- EditorApplication.update += OnEditorUpdate;
-
- m_SeparatorStyle = new GUIStyle();
- m_SeparatorStyle.normal.background = EditorGUIUtility.whiteTexture;
- m_SeparatorStyle.stretchWidth = true;
- m_SeparatorStyle.margin = new RectOffset(0, 0, 7, 7);
- TitleLabel = new GUIStyle(EditorStyles.boldLabel);
- TitleLabel.fontSize = 12;
- TitleLabel.normal.textColor = EditorGUIUtility.isProSkin ? new Color(1,1,1,0.8f) : new Color(0.2f, 0.2f, 0.2f, 0.8f);
- TitleLabel.alignment = TextAnchor.UpperCenter;
- CenteredMiniLabel = new GUIStyle(EditorStyles.centeredGreyMiniLabel);
- CenteredMiniLabel.normal.textColor = new Color(1, 1, 1, 0.8f);
- CenteredMiniLabel.fontSize = 11;
- CenteredMiniLabel.alignment = TextAnchor.UpperCenter;
- CenteredBoldMiniLabel = new GUIStyle(CenteredMiniLabel);
- CenteredBoldMiniLabel.fontStyle = FontStyle.Bold;
- MiniGreyLabel = new GUIStyle(EditorStyles.centeredGreyMiniLabel);
- MiniGreyLabel.alignment = TextAnchor.MiddleLeft;
- BoldMiniGreyLabel = new GUIStyle(MiniGreyLabel);
- BoldMiniGreyLabel.fontStyle = FontStyle.Bold;
- HighlightColor1 = new Color(0.65f, 0.7f, 0.8f, 1f);
- HighlightColor2 = new Color(0.5f, 0.5f, 0.55f, 1f);
- }
- private static void OnEditorUpdate()
- {
- if(EditorApplication.timeSinceStartup > m_OneSecondTimer + 1f)
- {
- if(OneSecondPassed != null)
- OneSecondPassed();
- m_OneSecondTimer = EditorApplication.timeSinceStartup;
- }
- }
- public static void Separator(Color rgb, float thickness = 1)
- {
- Rect position = GUILayoutUtility.GetRect(GUIContent.none, m_SeparatorStyle, GUILayout.Height(thickness));
- if(Event.current.type == EventType.Repaint)
- {
- Color restoreColor = GUI.color;
- GUI.color = rgb;
- m_SeparatorStyle.Draw(position, false, false, false, false);
- GUI.color = restoreColor;
- }
- }
- public static void Separator(float thickness, GUIStyle splitterStyle)
- {
- Rect position = GUILayoutUtility.GetRect(GUIContent.none, splitterStyle, GUILayout.Height(thickness));
- if(Event.current.type == EventType.Repaint)
- {
- Color restoreColor = GUI.color;
- GUI.color = SeparatorColor;
- splitterStyle.Draw(position, false, false, false, false);
- GUI.color = restoreColor;
- }
- }
- public static void Separator(float thickness = 1)
- {
- Separator(thickness, m_SeparatorStyle);
- }
- public static void Separator(Rect position, Color color)
- {
- if(Event.current.type == EventType.Repaint)
- {
- Color restoreColor = GUI.color;
- GUI.color = color;
- m_SeparatorStyle.Draw(position, false, false, false, false);
- GUI.color = restoreColor;
- }
- }
- public static void Separator(Rect position)
- {
- Separator(position, SeparatorColor);
- }
- public static void EnumPopupNonAlloc(Rect rect, SerializedProperty property, ref string[] names)
- {
- property.enumValueIndex = EditorGUI.Popup(rect, property.enumValueIndex, names);
- }
- public static int IndexOfString(string str, string[] allStrings)
- {
- for(int i = 0;i < allStrings.Length;i++)
- {
- if(allStrings[i] == str)
- return i;
- }
- return 0;
- }
- public static string StringAtIndex(int i, string[] allStrings)
- {
- return allStrings.Length > i ? allStrings[i] : "";
- }
- }
- }
|