diff options
author | chai <chaifix@163.com> | 2022-08-29 09:39:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2022-08-29 09:39:43 +0800 |
commit | 3fafce57f902a8d8d20f7e9f1bcb0e55c9cb74f3 (patch) | |
tree | e5394053956da50f9c0bb37b4773e8ce7cdd92c9 /Other/CADEMO/Assets/TutorialInfo/Scripts |
Diffstat (limited to 'Other/CADEMO/Assets/TutorialInfo/Scripts')
5 files changed, 205 insertions, 0 deletions
diff --git a/Other/CADEMO/Assets/TutorialInfo/Scripts/Editor.meta b/Other/CADEMO/Assets/TutorialInfo/Scripts/Editor.meta new file mode 100644 index 0000000..f59f099 --- /dev/null +++ b/Other/CADEMO/Assets/TutorialInfo/Scripts/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3ad9b87dffba344c89909c6d1b1c17e1 +folderAsset: yes +timeCreated: 1475593892 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: 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: diff --git a/Other/CADEMO/Assets/TutorialInfo/Scripts/Readme.cs b/Other/CADEMO/Assets/TutorialInfo/Scripts/Readme.cs new file mode 100644 index 0000000..48843db --- /dev/null +++ b/Other/CADEMO/Assets/TutorialInfo/Scripts/Readme.cs @@ -0,0 +1,14 @@ +using System; +using UnityEngine; + +public class Readme : ScriptableObject { + public Texture2D icon; + public string title; + public Section[] sections; + public bool loadedLayout; + + [Serializable] + public class Section { + public string heading, text, linkText, url; + } +} diff --git a/Other/CADEMO/Assets/TutorialInfo/Scripts/Readme.cs.meta b/Other/CADEMO/Assets/TutorialInfo/Scripts/Readme.cs.meta new file mode 100644 index 0000000..0dd2604 --- /dev/null +++ b/Other/CADEMO/Assets/TutorialInfo/Scripts/Readme.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fcf7219bab7fe46a1ad266029b2fee19 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: + - icon: {fileID: 2800000, guid: d4743ba2e2a59f946b2125c074582ce7, type: 3} + executionOrder: 0 + icon: {fileID: 2800000, guid: a186f8a87ca4f4d3aa864638ad5dfb65, type: 3} + userData: + assetBundleName: + assetBundleVariant: |