summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/StyleManager.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.timeline@1.2.13/Editor/Utilities/StyleManager.cs
downloadProject-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.gz
Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.bz2
Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.zip
Inital commit
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/StyleManager.cs')
-rw-r--r--Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/StyleManager.cs60
1 files changed, 60 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/StyleManager.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/StyleManager.cs
new file mode 100644
index 0000000..794fc68
--- /dev/null
+++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/StyleManager.cs
@@ -0,0 +1,60 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEditor.Experimental;
+using UnityEditor.StyleSheets;
+using UnityEngine;
+using UnityEngine.Timeline;
+
+namespace UnityEditor.Timeline
+{
+ static class StyleManager
+ {
+ static readonly StyleState[] k_StyleStates = { StyleState.any };
+ static readonly string k_ErrorCannotFindStyle = L10n.Tr("Cannot find style {0} for {1}");
+
+ static Dictionary<Type, GUIStyle> s_CustomStyles = new Dictionary<Type, GUIStyle>();
+ static GUISkin s_CurrentSkin;
+
+ public static GUIStyle UssStyleForType(Type type)
+ {
+ ClearCacheIfInvalid();
+
+ GUIStyle cachedStyle;
+ if (s_CustomStyles.TryGetValue(type, out cachedStyle))
+ return cachedStyle;
+
+ var style = DirectorStyles.GetGUIStyle(DirectorStyles.markerDefaultStyle);
+
+ var customStyleForType = CustomStyleForType(type);
+ if (customStyleForType != null)
+ {
+ if (IsStyleValid(customStyleForType))
+ style = DirectorStyles.GetGUIStyle(customStyleForType);
+ else
+ Debug.LogWarningFormat(k_ErrorCannotFindStyle, customStyleForType, type.Name);
+ }
+
+ s_CustomStyles.Add(type, style);
+ return style;
+ }
+
+ static string CustomStyleForType(Type type)
+ {
+ var attr = (CustomStyleAttribute)type.GetCustomAttributes(typeof(CustomStyleAttribute), true).FirstOrDefault();
+ return attr != null ? attr.ussStyle : null;
+ }
+
+ static bool IsStyleValid(string ussStyle)
+ {
+ return GUISkin.current.FindStyle(ussStyle) != null || EditorResources.styleCatalog.GetStyle(ussStyle, k_StyleStates).IsValid();
+ }
+
+ static void ClearCacheIfInvalid()
+ {
+ if (s_CurrentSkin != GUISkin.current)
+ s_CustomStyles.Clear();
+ s_CurrentSkin = GUISkin.current;
+ }
+ }
+}