From 12ef2973ac939eb96007e57ab4f76cd84265bf1e Mon Sep 17 00:00:00 2001 From: ousttrue Date: Sat, 25 Dec 2021 01:49:27 +0900 Subject: [PATCH] add font initialize callback --- Editor/Editors/UImGuiEditor.cs | 3 +++ Source/Texture/TextureManager.cs | 13 ++++++++++--- Source/UImGui.cs | 5 ++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Editor/Editors/UImGuiEditor.cs b/Editor/Editors/UImGuiEditor.cs index d0d6129..4b7353c 100644 --- a/Editor/Editors/UImGuiEditor.cs +++ b/Editor/Editors/UImGuiEditor.cs @@ -17,6 +17,7 @@ internal class UImGuiEditor : UnityEditor.Editor private SerializedProperty _platform; private SerializedProperty _initialConfiguration; private SerializedProperty _fontAtlasConfiguration; + private SerializedProperty _fontCustomInitializer; private SerializedProperty _iniSettings; private SerializedProperty _shaders; private SerializedProperty _style; @@ -46,6 +47,7 @@ public override void OnInspectorGUI() EditorGUILayout.PropertyField(_platform); EditorGUILayout.PropertyField(_initialConfiguration); EditorGUILayout.PropertyField(_fontAtlasConfiguration); + EditorGUILayout.PropertyField(_fontCustomInitializer); EditorGUILayout.PropertyField(_iniSettings); EditorGUILayout.PropertyField(_shaders); EditorGUILayout.PropertyField(_style); @@ -75,6 +77,7 @@ private void OnEnable() _platform = serializedObject.FindProperty("_platformType"); _initialConfiguration = serializedObject.FindProperty("_initialConfiguration"); _fontAtlasConfiguration = serializedObject.FindProperty("_fontAtlasConfiguration"); + _fontCustomInitializer = serializedObject.FindProperty("_fontCustomInitializer"); _iniSettings = serializedObject.FindProperty("_iniSettings"); _shaders = serializedObject.FindProperty("_shaders"); _style = serializedObject.FindProperty("_style"); diff --git a/Source/Texture/TextureManager.cs b/Source/Texture/TextureManager.cs index 629593c..e30dfa6 100644 --- a/Source/Texture/TextureManager.cs +++ b/Source/Texture/TextureManager.cs @@ -101,7 +101,7 @@ private IntPtr RegisterTexture(UTexture texture) return id; } - public void BuildFontAtlas(ImGuiIOPtr io, in FontAtlasConfigAsset settings) + public void BuildFontAtlas(ImGuiIOPtr io, in FontAtlasConfigAsset settings, UnityEngine.Events.UnityEvent custom) { if (io.Fonts.IsBuilt()) { @@ -115,8 +115,15 @@ public void BuildFontAtlas(ImGuiIOPtr io, in FontAtlasConfigAsset settings) if (settings == null) { - io.Fonts.AddFontDefault(); - io.Fonts.Build(); + if (custom.GetPersistentEventCount() > 0) + { + custom.Invoke(); + } + else + { + io.Fonts.AddFontDefault(); + io.Fonts.Build(); + } return; } diff --git a/Source/UImGui.cs b/Source/UImGui.cs index ad50df8..cf394f5 100644 --- a/Source/UImGui.cs +++ b/Source/UImGui.cs @@ -61,6 +61,9 @@ public class UImGui : MonoBehaviour ConfigMemoryCompactTimer = 1f, }; + [SerializeField] + private UnityEngine.Events.UnityEvent _fontCustomInitializer; + [SerializeField] private FontAtlasConfigAsset _fontAtlasConfiguration = null; @@ -160,7 +163,7 @@ void Fail(string reason) _initialConfiguration.ApplyTo(io); _style?.ApplyTo(ImGui.GetStyle()); - _context.TextureManager.BuildFontAtlas(io, _fontAtlasConfiguration); + _context.TextureManager.BuildFontAtlas(io, _fontAtlasConfiguration, _fontCustomInitializer); _context.TextureManager.Initialize(io); IPlatform platform = PlatformUtility.Create(_platformType, _cursorShapes, _iniSettings);