using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; namespace FAE { public class HelpWindow : EditorWindow { //Window properties private static int width = 440; private static int height = 300; private bool isTabInstallation = true; private bool isTabGettingStarted = false; private bool isTabSupport = false; [MenuItem("Help/Fantasy Adventure Environment", false, 0)] public static void ShowWindow() { EditorWindow editorWindow = EditorWindow.GetWindow(false, "About", true); editorWindow.titleContent = new GUIContent("Help " + FAE_Core.INSTALLED_VERSION); editorWindow.autoRepaintOnSceneChange = true; //Open somewhat in the center of the screen editorWindow.position = new Rect((Screen.width) / 2f, (Screen.height) / 2f, width, height); //Fixed size editorWindow.maxSize = new Vector2(width, height); editorWindow.minSize = new Vector2(width, 200); Init(); editorWindow.Show(); } private void SetWindowHeight(float height) { this.maxSize = new Vector2(width, height); this.minSize = new Vector2(width, height); } //Store values in the volatile SessionState static void Init() { FAE_Core.GetRootFolder(); } void OnGUI() { DrawHeader(); GUILayout.Space(5); DrawTabs(); GUILayout.Space(5); EditorGUILayout.BeginVertical(EditorStyles.helpBox); if (isTabInstallation) DrawInstallation(); if (isTabGettingStarted) DrawGettingStarted(); if (isTabSupport) DrawSupport(); //DrawActionButtons(); EditorGUILayout.EndVertical(); DrawFooter(); } void DrawHeader() { EditorGUILayout.Space(); EditorGUILayout.LabelField("Fantasy Adventure Environment", Header); GUILayout.Label("Version: " + FAE_Core.INSTALLED_VERSION, Footer); EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); } void DrawTabs() { EditorGUILayout.BeginHorizontal(); if (GUILayout.Toggle(isTabInstallation, "Installation", Tab)) { isTabInstallation = true; isTabGettingStarted = false; isTabSupport = false; } if (GUILayout.Toggle(isTabGettingStarted, "Getting started", Tab)) { isTabInstallation = false; isTabGettingStarted = true; isTabSupport = false; } if (GUILayout.Toggle(isTabSupport, "Support", Tab)) { isTabInstallation = false; isTabGettingStarted = false; isTabSupport = true; } EditorGUILayout.EndHorizontal(); } void DrawInstallation() { SetWindowHeight(335); EditorGUILayout.LabelField("Render pipeline conversion", EditorStyles.boldLabel); #if !UNITY_2019_3_OR_NEWER EditorGUILayout.HelpBox("Universal Render Pipeline support requires Unity 2019.3.7f1 or newer", MessageType.Info); #else if (UnityEngine.Rendering.GraphicsSettings.renderPipelineAsset == null) { EditorGUILayout.HelpBox("No Scriptable Render Pipeline is currently active", MessageType.Warning); } #if FAE_DEV EditorGUILayout.BeginHorizontal(); { if (GUILayout.Button("Built-in\nAmplify Shader Editor shaders", Button)) { FAE_Core.InstallShaders(FAE_Core.ShaderInstallation.BuiltIn); } #endif using (new EditorGUI.DisabledGroupScope(UnityEngine.Rendering.GraphicsSettings.renderPipelineAsset == null)) { if (GUILayout.Button("Universal Render Pipeline\nUnpack Shader Graph shaders and URP materials", Button)) { FAE_Core.InstallShaders(FAE_Core.ShaderInstallation.UniversalRP); } } #if FAE_DEV } EditorGUILayout.EndHorizontal(); #endif EditorGUILayout.Space(); using (new EditorGUILayout.HorizontalScope()) { EditorGUILayout.HelpBox("Note: Grass shader for the URP is available on the Asset Store", MessageType.Info); if (GUILayout.Button("Open Asset Store", GUILayout.Height(40f), GUILayout.Width(120f))) { Application.OpenURL("com.unity3d.kharma:content/143830"); } } #endif } void DrawGettingStarted() { SetWindowHeight(335); EditorGUILayout.HelpBox("Please view the documentation for further details about this package and its workings.", MessageType.Info); EditorGUILayout.Space(); if (GUILayout.Button("Online documentation\nSet up, best practices and troubleshooting", Button)) { Application.OpenURL(FAE_Core.DOC_URL + "#getting-started-3"); } } void DrawSupport() { SetWindowHeight(350f); EditorGUILayout.BeginVertical(); //Support box EditorGUILayout.HelpBox("If you have any questions, or ran into issues, please get in touch!", MessageType.Info); EditorGUILayout.Space(); //Buttons box EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Email\nContact", Button)) { Application.OpenURL("mailto:contact@staggart.xyz"); } if (GUILayout.Button("Twitter\nFollow developments", Button)) { Application.OpenURL("https://twitter.com/search?q=staggart%20creations"); } if (GUILayout.Button("Forum\nJoin the discussion", Button)) { Application.OpenURL(FAE_Core.FORUM_URL); } EditorGUILayout.EndHorizontal();//Buttons box EditorGUILayout.EndVertical(); //Support box } private void DrawActionButtons() { EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Rate", Button)) Application.OpenURL("https://www.assetstore.unity3d.com/en/#!/account/downloads/search="); if (GUILayout.Button("Review", Button)) Application.OpenURL(""); EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); } private void DrawFooter() { //EditorGUILayout.Space(); EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); EditorGUILayout.Space(); GUILayout.Label("- Staggart Creations -", Footer); } #region Styles private static GUIStyle _Footer; public static GUIStyle Footer { get { if (_Footer == null) { _Footer = new GUIStyle(EditorStyles.centeredGreyMiniLabel) { alignment = TextAnchor.MiddleCenter, wordWrap = true, fontSize = 12 }; } return _Footer; } } private static GUIStyle _Button; public static GUIStyle Button { get { if (_Button == null) { _Button = new GUIStyle(GUI.skin.button) { alignment = TextAnchor.MiddleLeft, stretchWidth = true, richText = true, wordWrap = true, padding = new RectOffset() { left = 14, right = 14, top = 8, bottom = 8 } }; } return _Button; } } private static GUIStyle _Header; public static GUIStyle Header { get { if (_Header == null) { _Header = new GUIStyle(GUI.skin.label) { richText = true, alignment = TextAnchor.MiddleCenter, wordWrap = true, fontSize = 18, fontStyle = FontStyle.Bold }; } return _Header; } } private static Texture _HelpIcon; public static Texture HelpIcon { get { if (_HelpIcon == null) { _HelpIcon = EditorGUIUtility.FindTexture("d_UnityEditor.InspectorWindow"); } return _HelpIcon; } } private static GUIStyle _Tab; public static GUIStyle Tab { get { if (_Tab == null) { _Tab = new GUIStyle(EditorStyles.miniButtonMid) { alignment = TextAnchor.MiddleCenter, stretchWidth = true, richText = true, wordWrap = true, fontSize = 12, fixedHeight = 30f, fontStyle = FontStyle.Bold, padding = new RectOffset() { left = 14, right = 14, top = 8, bottom = 8 } }; } return _Tab; } } #endregion //Stylies }//Window Class }