You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/3rd/MPUIKit/Editor/Scripts/MPUIKitUtilityWindow.cs

167 lines
6.0 KiB
C#

3 months ago
using System.IO;
using UnityEditor;
using UnityEngine;
namespace MPUIKIT.Editor
{
public class MPUIKitUtilityWindow : EditorWindow
{
private static SerializedObject _graphicsSettingsObj;
private static bool _setup;
private static bool _alreadyShownOnStartup;
private bool _initialized;
private string _version = "Version: 0.99.5 (Beta)";
private static MPUIKitSettings _settings;
private static bool _setupIsRequired;
private static UnityEditor.Editor _settingsEditor;
[MenuItem("Window/MPUIKit/Utility Panel")]
public static void ShowWindow()
{
EditorWindow window = GetWindow<MPUIKitUtilityWindow>(true, "MPUIKit Utility Panel", true);
window.minSize = new Vector2(400, 540);
window.maxSize = new Vector2(400, 540);
LoadSettings();
}
private void OnEnable()
{
LoadSettings();
}
private static void LoadSettings()
{
if (_settings) return;
string path =
$"{MPEditorUtility.FindMPUIKitRootDirectory()}Editor{Path.DirectorySeparatorChar}MPUIKitSettings.asset";
_settings = AssetDatabase.LoadAssetAtPath<MPUIKitSettings>(path);
if (_settings == null)
{
_settings = CreateInstance<MPUIKitSettings>();
AssetDatabase.CreateAsset(_settings, path);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
}
}
private void OnGUI()
{
TopBannerGUI();
WelcomeGUI();
SettingsGUI();
UtilButtonsGUI();
BottomBarGUI();
}
private static void TopBannerGUI()
{
Rect headingRect = new Rect(0, 0, EditorGUIUtility.currentViewWidth, EditorGUIUtility.singleLineHeight * 5);
Rect backgroundTexCoords = new Rect(0, 0, headingRect.width / headingRect.height, 1);
Texture background = MPEditorContents.Background;
background.wrapMode = TextureWrapMode.Repeat;
GUI.DrawTextureWithTexCoords(headingRect, background, backgroundTexCoords);
float height = headingRect.height;
float width = headingRect.width - height - 30;
Rect titleRect = new Rect(headingRect.width - width - 5, 20, width, height - 30);
GUI.DrawTexture(titleRect, MPEditorContents.Title, ScaleMode.ScaleToFit);
Rect textureRect = headingRect;
textureRect.x = 0;
textureRect.width = textureRect.height - 7;
textureRect.height -= 7;
GUI.DrawTexture(textureRect, MPEditorContents.Logo, ScaleMode.ScaleToFit);
GUILayout.Space(headingRect.height + 20);
}
private void SettingsGUI()
{
if (!_settingsEditor)
{
UnityEditor.Editor.CreateCachedEditor(_settings, typeof(MPUIKitSettingsEditor), ref _settingsEditor);
}
_settingsEditor.OnInspectorGUI();
}
private static void WelcomeGUI()
{
var style = new GUIStyle(GUI.skin.label) {alignment = TextAnchor.MiddleCenter};
EditorGUILayout.LabelField("Thank you for using", style, GUILayout.ExpandWidth(true));
EditorGUILayout.LabelField("Modern Procedural UI Kit", style, GUILayout.ExpandWidth(true));
GUILayout.Space(20);
}
private static void UtilButtonsGUI()
{
GUILayout.Space(6);
Rect buttonRect = EditorGUILayout.GetControlRect(false, 40 * 3 + 4);
buttonRect.width = (buttonRect.width / 2) - 1;
buttonRect.height = 40;
if (GUI.Button(buttonRect, "Documentation"))
{
Application.OpenURL("https://scrollbie.com/documentations/mpuikit-docs/");
}
buttonRect.x += buttonRect.width + 2;
if (GUI.Button(buttonRect, "Website"))
{
Application.OpenURL("https://scrollbie.com/mpuikit/");
}
buttonRect.y += 42;
buttonRect.x -= buttonRect.width + 2;
if (GUI.Button(buttonRect, "Email"))
{
Application.OpenURL("mailto:support@scrollbie.com");
}
buttonRect.x += buttonRect.width + 2;
if (GUI.Button(buttonRect, "Forum"))
{
Application.OpenURL(
"https://forum.unity.com/threads/an-advanced-procedural-ui-generation-tool-create-modify-animate-spriteless-ui-even-at-runtime.846772");
}
buttonRect.y += 42;
buttonRect.x -= buttonRect.width + 2;
if (GUI.Button(buttonRect, "Changelog"))
{
Application.OpenURL("https://scrollbie.com/mpuikit/changelog.html");
}
buttonRect.x += buttonRect.width + 2;
if (GUI.Button(buttonRect, "Other Assets"))
{
Application.OpenURL("https://assetstore.unity.com/publishers/29536");
}
if (GUILayout.Button("★ Rate/Review MPUIKit", GUILayout.ExpandWidth(true), GUILayout.Height(40)))
{
Application.OpenURL("https://assetstore.unity.com/packages/slug/163041");
}
}
private void BottomBarGUI()
{
EditorGUILayout.BeginVertical();
{
GUILayout.FlexibleSpace();
EditorGUILayout.BeginHorizontal();
{
EditorGUILayout.LabelField("© Copyright 2020 Scrollbie Studio", EditorStyles.miniLabel);
GUIStyle style = new GUIStyle(EditorStyles.miniLabel);
style.alignment = TextAnchor.MiddleRight;
GUILayout.FlexibleSpace();
EditorGUILayout.LabelField(_version, style, GUILayout.Width(120));
}
EditorGUILayout.EndHorizontal();
}
EditorGUILayout.EndVertical();
}
}
}