| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 | 
							- using System.Collections;
 
- using System.Collections.Generic;
 
- using UnityEngine;
 
- using UnityEditor;
 
- using System;
 
- using System.IO;
 
- using System.Reflection;
 
- [CustomEditor(typeof(Readme))]
 
- [InitializeOnLoad]
 
- public class ReadmeEditor : Editor
 
- {
 
-     static string s_ShowedReadmeSessionStateName = "ReadmeEditor.showedReadme";
 
-     
 
-     static string s_ReadmeSourceDirectory = "Assets/TutorialInfo";
 
-     const float k_Space = 16f;
 
-     static ReadmeEditor()
 
-     {
 
-         EditorApplication.delayCall += SelectReadmeAutomatically;
 
-     }
 
-     static void RemoveTutorial()
 
-     {
 
-         if (EditorUtility.DisplayDialog("Remove Readme Assets",
 
-             
 
-             $"All contents under {s_ReadmeSourceDirectory} will be removed, are you sure you want to proceed?",
 
-             "Proceed",
 
-             "Cancel"))
 
-         {
 
-             if (Directory.Exists(s_ReadmeSourceDirectory))
 
-             {
 
-                 FileUtil.DeleteFileOrDirectory(s_ReadmeSourceDirectory);
 
-                 FileUtil.DeleteFileOrDirectory(s_ReadmeSourceDirectory + ".meta");
 
-             }
 
-             else
 
-             {
 
-                 Debug.Log($"Could not find the Readme folder at {s_ReadmeSourceDirectory}");
 
-             }
 
-             var readmeAsset = SelectReadme();
 
-             if (readmeAsset != null)
 
-             {
 
-                 var path = AssetDatabase.GetAssetPath(readmeAsset);
 
-                 FileUtil.DeleteFileOrDirectory(path + ".meta");
 
-                 FileUtil.DeleteFileOrDirectory(path);
 
-             }
 
-             AssetDatabase.Refresh();
 
-         }
 
-     }
 
-     static void SelectReadmeAutomatically()
 
-     {
 
-         if (!SessionState.GetBool(s_ShowedReadmeSessionStateName, false))
 
-         {
 
-             var readme = SelectReadme();
 
-             SessionState.SetBool(s_ShowedReadmeSessionStateName, true);
 
-             if (readme && !readme.loadedLayout)
 
-             {
 
-                 LoadLayout();
 
-                 readme.loadedLayout = true;
 
-             }
 
-         }
 
-     }
 
-     static void LoadLayout()
 
-     {
 
-         var assembly = typeof(EditorApplication).Assembly;
 
-         var windowLayoutType = assembly.GetType("UnityEditor.WindowLayout", true);
 
-         var method = windowLayoutType.GetMethod("LoadWindowLayout", BindingFlags.Public | BindingFlags.Static);
 
-         method.Invoke(null, new object[] { Path.Combine(Application.dataPath, "TutorialInfo/Layout.wlt"), false });
 
-     }
 
-     static Readme SelectReadme()
 
-     {
 
-         var ids = AssetDatabase.FindAssets("Readme t:Readme");
 
-         if (ids.Length == 1)
 
-         {
 
-             var readmeObject = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids[0]));
 
-             Selection.objects = new UnityEngine.Object[] { readmeObject };
 
-             return (Readme)readmeObject;
 
-         }
 
-         else
 
-         {
 
-             Debug.Log("Couldn't find a readme");
 
-             return null;
 
-         }
 
-     }
 
-     protected override void OnHeaderGUI()
 
-     {
 
-         var readme = (Readme)target;
 
-         Init();
 
-         var iconWidth = Mathf.Min(EditorGUIUtility.currentViewWidth / 3f - 20f, 128f);
 
-         GUILayout.BeginHorizontal("In BigTitle");
 
-         {
 
-             if (readme.icon != null)
 
-             {
 
-                 GUILayout.Space(k_Space);
 
-                 GUILayout.Label(readme.icon, GUILayout.Width(iconWidth), GUILayout.Height(iconWidth));
 
-             }
 
-             GUILayout.Space(k_Space);
 
-             GUILayout.BeginVertical();
 
-             {
 
-                 GUILayout.FlexibleSpace();
 
-                 GUILayout.Label(readme.title, TitleStyle);
 
-                 GUILayout.FlexibleSpace();
 
-             }
 
-             GUILayout.EndVertical();
 
-             GUILayout.FlexibleSpace();
 
-         }
 
-         GUILayout.EndHorizontal();
 
-     }
 
-     public override void OnInspectorGUI()
 
-     {
 
-         var readme = (Readme)target;
 
-         Init();
 
-         foreach (var section in readme.sections)
 
-         {
 
-             if (!string.IsNullOrEmpty(section.heading))
 
-             {
 
-                 GUILayout.Label(section.heading, HeadingStyle);
 
-             }
 
-             if (!string.IsNullOrEmpty(section.text))
 
-             {
 
-                 GUILayout.Label(section.text, BodyStyle);
 
-             }
 
-             if (!string.IsNullOrEmpty(section.linkText))
 
-             {
 
-                 if (LinkLabel(new GUIContent(section.linkText)))
 
-                 {
 
-                     Application.OpenURL(section.url);
 
-                 }
 
-             }
 
-             GUILayout.Space(k_Space);
 
-         }
 
-         if (GUILayout.Button("Remove Readme Assets", ButtonStyle))
 
-         {
 
-             RemoveTutorial();
 
-         }
 
-     }
 
-     bool m_Initialized;
 
-     GUIStyle LinkStyle
 
-     {
 
-         get { return m_LinkStyle; }
 
-     }
 
-     [SerializeField]
 
-     GUIStyle m_LinkStyle;
 
-     GUIStyle TitleStyle
 
-     {
 
-         get { return m_TitleStyle; }
 
-     }
 
-     [SerializeField]
 
-     GUIStyle m_TitleStyle;
 
-     GUIStyle HeadingStyle
 
-     {
 
-         get { return m_HeadingStyle; }
 
-     }
 
-     [SerializeField]
 
-     GUIStyle m_HeadingStyle;
 
-     GUIStyle BodyStyle
 
-     {
 
-         get { return m_BodyStyle; }
 
-     }
 
-     [SerializeField]
 
-     GUIStyle m_BodyStyle;
 
-     GUIStyle ButtonStyle
 
-     {
 
-         get { return m_ButtonStyle; }
 
-     }
 
-     [SerializeField]
 
-     GUIStyle m_ButtonStyle;
 
-     void Init()
 
-     {
 
-         if (m_Initialized)
 
-             return;
 
-         m_BodyStyle = new GUIStyle(EditorStyles.label);
 
-         m_BodyStyle.wordWrap = true;
 
-         m_BodyStyle.fontSize = 14;
 
-         m_BodyStyle.richText = true;
 
-         m_TitleStyle = new GUIStyle(m_BodyStyle);
 
-         m_TitleStyle.fontSize = 26;
 
-         m_HeadingStyle = new GUIStyle(m_BodyStyle);
 
-         m_HeadingStyle.fontStyle = FontStyle.Bold;
 
-         m_HeadingStyle.fontSize = 18;
 
-         m_LinkStyle = new GUIStyle(m_BodyStyle);
 
-         m_LinkStyle.wordWrap = false;
 
-         // Match selection color which works nicely for both light and dark skins
 
-         m_LinkStyle.normal.textColor = new Color(0x00 / 255f, 0x78 / 255f, 0xDA / 255f, 1f);
 
-         m_LinkStyle.stretchWidth = false;
 
-         m_ButtonStyle = new GUIStyle(EditorStyles.miniButton);
 
-         m_ButtonStyle.fontStyle = FontStyle.Bold;
 
-         m_Initialized = true;
 
-     }
 
-     bool LinkLabel(GUIContent label, params GUILayoutOption[] options)
 
-     {
 
-         var position = GUILayoutUtility.GetRect(label, LinkStyle, options);
 
-         Handles.BeginGUI();
 
-         Handles.color = LinkStyle.normal.textColor;
 
-         Handles.DrawLine(new Vector3(position.xMin, position.yMax), new Vector3(position.xMax, position.yMax));
 
-         Handles.color = Color.white;
 
-         Handles.EndGUI();
 
-         EditorGUIUtility.AddCursorRect(position, MouseCursor.Link);
 
-         return GUI.Button(position, label, LinkStyle);
 
-     }
 
- }
 
 
  |