summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMP_StyleSheet.cs
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
committerAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
commitc55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 (patch)
treeee4d51c7c1d633e11f46453ef1edd3c77c4ef9f7 /Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMP_StyleSheet.cs
downloadProject-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.gz
Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.bz2
Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.zip
Inital commit
Diffstat (limited to 'Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMP_StyleSheet.cs')
-rw-r--r--Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMP_StyleSheet.cs131
1 files changed, 131 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMP_StyleSheet.cs b/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMP_StyleSheet.cs
new file mode 100644
index 0000000..8d02a18
--- /dev/null
+++ b/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMP_StyleSheet.cs
@@ -0,0 +1,131 @@
+using UnityEngine;
+using System;
+using System.Collections.Generic;
+
+
+namespace TMPro
+{
+
+ [Serializable]
+ public class TMP_StyleSheet : ScriptableObject
+ {
+ private static TMP_StyleSheet s_Instance;
+
+ [SerializeField]
+ private List<TMP_Style> m_StyleList = new List<TMP_Style>(1);
+ private Dictionary<int, TMP_Style> m_StyleDictionary = new Dictionary<int, TMP_Style>();
+
+
+ /// <summary>
+ /// Get a singleton instance of the TMP_StyleSheet
+ /// </summary>
+ public static TMP_StyleSheet instance
+ {
+ get
+ {
+ if (s_Instance == null)
+ {
+ s_Instance = TMP_Settings.defaultStyleSheet;
+
+ if (s_Instance == null)
+ s_Instance = Resources.Load<TMP_StyleSheet>("Style Sheets/Default Style Sheet");
+
+ if (s_Instance == null) return null;
+
+ // Load the style dictionary.
+ s_Instance.LoadStyleDictionaryInternal();
+ }
+
+ return s_Instance;
+ }
+ }
+
+
+ /// <summary>
+ /// Static Function to load the Default Style Sheet.
+ /// </summary>
+ /// <returns></returns>
+ public static TMP_StyleSheet LoadDefaultStyleSheet()
+ {
+ return instance;
+ }
+
+
+ /// <summary>
+ /// Function to retrieve the Style matching the HashCode.
+ /// </summary>
+ /// <param name="hashCode"></param>
+ /// <returns></returns>
+ public static TMP_Style GetStyle(int hashCode)
+ {
+ return instance.GetStyleInternal(hashCode);
+ }
+
+
+ /// <summary>
+ /// Internal method to retrieve the Style matching the Hashcode.
+ /// </summary>
+ /// <param name="hashCode"></param>
+ /// <returns></returns>
+ private TMP_Style GetStyleInternal(int hashCode)
+ {
+ if (m_StyleDictionary.TryGetValue(hashCode, out TMP_Style style))
+ {
+ return style;
+ }
+
+ return null;
+ }
+
+
+ public void UpdateStyleDictionaryKey(int old_key, int new_key)
+ {
+ if (m_StyleDictionary.ContainsKey(old_key))
+ {
+ TMP_Style style = m_StyleDictionary[old_key];
+ m_StyleDictionary.Add(new_key, style);
+ m_StyleDictionary.Remove(old_key);
+ }
+ }
+
+
+ /// <summary>
+ /// Function to update the internal reference to a newly assigned style sheet in the TMP Settings.
+ /// </summary>
+ public static void UpdateStyleSheet()
+ {
+ // Reset instance
+ s_Instance = null;
+
+ RefreshStyles();
+ }
+
+
+ /// <summary>
+ /// Function to refresh the Style Dictionary.
+ /// </summary>
+ public static void RefreshStyles()
+ {
+ instance.LoadStyleDictionaryInternal();
+ }
+
+
+ /// <summary>
+ ///
+ /// </summary>
+ private void LoadStyleDictionaryInternal()
+ {
+ m_StyleDictionary.Clear();
+
+ // Read Styles from style list and store them into dictionary for faster access.
+ for (int i = 0; i < m_StyleList.Count; i++)
+ {
+ m_StyleList[i].RefreshStyle();
+
+ if (!m_StyleDictionary.ContainsKey(m_StyleList[i].hashCode))
+ m_StyleDictionary.Add(m_StyleList[i].hashCode, m_StyleList[i]);
+ }
+ }
+ }
+
+} \ No newline at end of file