Repository navigation
Expand file tree
/
Copy pathIconSet.cs
More file actions
70 lines (54 loc) · 2.4 KB
/
Copy pathIconSet.cs
File metadata and controls
70 lines (54 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using System;
using System.Collections.Generic;
using UnityEngine;
namespace ReactUnity.Styling
{
[CreateAssetMenu(fileName = "IconSet", menuName = "React Unity/Icon Set", order = 1)]
public class IconSet : ScriptableObject
{
public string Name;
[Tooltip("For UGUI Use")]
public TMPro.TMP_FontAsset FontAsset;
[Tooltip("For UIToolkit Use")]
public UnityEngine.TextCore.Text.FontAsset ToolkitFontAsset;
public TextAsset Codepoints;
[NonSerialized]
public Dictionary<string, string> CharacterMap;
public string ConvertTextContent(string text)
{
if (CharacterMap == null) GenerateCharacterMap();
if (text != null && CharacterMap.TryGetValue(text, out var mapped)) return mapped;
return "";
}
private void GenerateCharacterMap()
{
CharacterMap = new Dictionary<string, string>();
if (Codepoints == null) return;
var lines = Codepoints.text.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
var lineSplit = new[] { ' ' };
foreach (var line in lines)
{
var split = line.Split(lineSplit, StringSplitOptions.RemoveEmptyEntries);
if (split.Length != 2) continue;
var name = split[0];
var cp = split[1];
var parsed = Convert.ToInt32(cp, 16);
CharacterMap[name] = char.ConvertFromUtf32(parsed);
}
}
#if UNITY_EDITOR
[ContextMenu("Generate Characters")]
public void GenerateCharactersFromCharacterMap() {
GenerateCharacterMap();
var chars = new System.Text.StringBuilder();
foreach (var pair in CharacterMap) {
chars.Append(pair.Value);
}
var path = System.IO.Path.GetDirectoryName(UnityEditor.AssetDatabase.GetAssetPath(this));
System.IO.File.WriteAllText(System.IO.Path.Combine(path, "characters.txt"), chars.ToString());
//var range = string.Join(",", CharacterMap.Select(x => x.Value[0]).Distinct().OrderBy(x => x).Select(x => ((int) x).ToString("X")).ToArray());
//System.IO.File.WriteAllText(System.IO.Path.Combine(path, "characters-range.txt"), range.ToString());
}
#endif
}
}