diff options
Diffstat (limited to 'Other/CADEMO/Assets/TutorialInfo/Scripts/Editor')
-rw-r--r-- | Other/CADEMO/Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs | 158 | ||||
-rw-r--r-- | Other/CADEMO/Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs.meta | 12 |
2 files changed, 170 insertions, 0 deletions
diff --git a/Other/CADEMO/Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs b/Other/CADEMO/Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs new file mode 100644 index 0000000..2e59477 --- /dev/null +++ b/Other/CADEMO/Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs @@ -0,0 +1,158 @@ +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 kShowedReadmeSessionStateName = "ReadmeEditor.showedReadme"; + + static float kSpace = 16f; + + static ReadmeEditor() + { + EditorApplication.delayCall += SelectReadmeAutomatically; + } + + static void SelectReadmeAutomatically() + { + if (!SessionState.GetBool(kShowedReadmeSessionStateName, false )) + { + var readme = SelectReadme(); + SessionState.SetBool(kShowedReadmeSessionStateName, 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}); + } + + [MenuItem("Tutorial/Show Tutorial Instructions")] + 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"); + { + GUILayout.Label(readme.icon, GUILayout.Width(iconWidth), GUILayout.Height(iconWidth)); + GUILayout.Label(readme.title, TitleStyle); + } + 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(kSpace); + } + } + + + 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; + + void Init() + { + if (m_Initialized) + return; + m_BodyStyle = new GUIStyle(EditorStyles.label); + m_BodyStyle.wordWrap = true; + m_BodyStyle.fontSize = 14; + + m_TitleStyle = new GUIStyle(m_BodyStyle); + m_TitleStyle.fontSize = 26; + + m_HeadingStyle = new GUIStyle(m_BodyStyle); + 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_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); + } +} + diff --git a/Other/CADEMO/Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs.meta b/Other/CADEMO/Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs.meta new file mode 100644 index 0000000..f038618 --- /dev/null +++ b/Other/CADEMO/Assets/TutorialInfo/Scripts/Editor/ReadmeEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 476cc7d7cd9874016adc216baab94a0a +timeCreated: 1484146680 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: |