You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
3.0 KiB
90 lines
3.0 KiB
using System.Collections; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
|
|
|
|
namespace TMPro |
|
{ |
|
/// <summary> |
|
/// |
|
/// </summary> |
|
public class TMP_ResourceManager |
|
{ |
|
private static readonly TMP_ResourceManager s_instance = new TMP_ResourceManager(); |
|
|
|
static TMP_ResourceManager() { } |
|
|
|
// ====================================================== |
|
// TEXT SETTINGS MANAGEMENT |
|
// ====================================================== |
|
|
|
private static TMP_Settings s_TextSettings; |
|
|
|
internal static TMP_Settings GetTextSettings() |
|
{ |
|
if (s_TextSettings == null) |
|
{ |
|
// Try loading the TMP Settings from a Resources folder in the user project. |
|
s_TextSettings = Resources.Load<TMP_Settings>("TextSettings"); // ?? ScriptableObject.CreateInstance<TMP_Settings>(); |
|
|
|
#if UNITY_EDITOR |
|
if (s_TextSettings == null) |
|
{ |
|
// Open TMP Resources Importer to enable the user to import the TMP Essential Resources and option TMP Examples & Extras |
|
TMP_PackageResourceImporterWindow.ShowPackageImporterWindow(); |
|
} |
|
#endif |
|
} |
|
|
|
return s_TextSettings; |
|
} |
|
|
|
// ====================================================== |
|
// FONT ASSET MANAGEMENT - Fields, Properties and Functions |
|
// ====================================================== |
|
|
|
private static readonly List<TMP_FontAsset> s_FontAssetReferences = new List<TMP_FontAsset>(); |
|
private static readonly Dictionary<int, TMP_FontAsset> s_FontAssetReferenceLookup = new Dictionary<int, TMP_FontAsset>(); |
|
|
|
/// <summary> |
|
/// |
|
/// </summary> |
|
/// <param name="fontAsset"></param> |
|
public static void AddFontAsset(TMP_FontAsset fontAsset) |
|
{ |
|
int hashcode = fontAsset.hashCode; |
|
|
|
if (s_FontAssetReferenceLookup.ContainsKey(hashcode)) |
|
return; |
|
|
|
s_FontAssetReferences.Add(fontAsset); |
|
s_FontAssetReferenceLookup.Add(hashcode, fontAsset); |
|
} |
|
|
|
/// <summary> |
|
/// |
|
/// </summary> |
|
/// <param name="hashcode"></param> |
|
/// <param name="fontAsset"></param> |
|
/// <returns></returns> |
|
public static bool TryGetFontAsset(int hashcode, out TMP_FontAsset fontAsset) |
|
{ |
|
fontAsset = null; |
|
|
|
return s_FontAssetReferenceLookup.TryGetValue(hashcode, out fontAsset); |
|
} |
|
|
|
|
|
internal static void RebuildFontAssetCache(int instanceID) |
|
{ |
|
// Iterate over loaded font assets to update affected font assets |
|
for (int i = 0; i < s_FontAssetReferences.Count; i++) |
|
{ |
|
TMP_FontAsset fontAsset = s_FontAssetReferences[i]; |
|
|
|
if (fontAsset.FallbackSearchQueryLookup.Contains(instanceID)) |
|
fontAsset.ReadFontAssetDefinition(); |
|
} |
|
} |
|
} |
|
}
|
|
|