|
|
|
|
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();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|