Forked from kimsama/ngui-2.6.4-dynamic-fonts-fix.patch
Created
October 17, 2013 17:52
-
-
Save ffyhlkain/7029301 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -r 6e8e22fe6d82 Assets/NGUI/Scripts/Internal/UIWidget.cs | |
--- a/Assets/NGUI/Scripts/Internal/UIWidget.cs Thu Aug 08 12:15:03 2013 +0900 | |
+++ b/Assets/NGUI/Scripts/Internal/UIWidget.cs Thu Aug 08 12:15:07 2013 +0900 | |
@@ -7,6 +7,8 @@ | |
#define OLD_UNITY | |
#endif | |
+#define DYNAMIC_FONT_BUG_FIX | |
+ | |
using UnityEngine; | |
using System.Collections.Generic; | |
@@ -484,7 +486,11 @@ | |
/// Clear references. | |
/// </summary> | |
+#if DYNAMIC_FONT_BUG_FIX | |
+ protected virtual void OnDisable () | |
+#else | |
void OnDisable () | |
+#endif | |
{ | |
if (!keepMaterial) | |
{ | |
diff -r 6e8e22fe6d82 Assets/NGUI/Scripts/UI/UIFont.cs | |
--- a/Assets/NGUI/Scripts/UI/UIFont.cs Thu Aug 08 12:15:03 2013 +0900 | |
+++ b/Assets/NGUI/Scripts/UI/UIFont.cs Thu Aug 08 12:15:07 2013 +0900 | |
@@ -10,6 +10,8 @@ | |
#define DYNAMIC_FONT | |
#endif | |
+#define DYNAMIC_FONT_BUG_FIX | |
+ | |
using UnityEngine; | |
using System.Collections.Generic; | |
using System.Text; | |
@@ -672,13 +674,21 @@ | |
#endif | |
{ | |
if (encoding) text = NGUITools.StripSymbols(text); | |
-#if DYNAMIC_FONT | |
+ | |
+#if DYNAMIC_FONT_BUG_FIX | |
+ if (dynamic) | |
+ { | |
+ mDynamicFont.RequestCharactersInTexture(text, mDynamicFontSize, mDynamicFontStyle); | |
+ } | |
+#else | |
+# if DYNAMIC_FONT | |
if (dynamic) | |
{ | |
mDynamicFont.textureRebuildCallback = OnFontChanged; | |
mDynamicFont.RequestCharactersInTexture(text, mDynamicFontSize, mDynamicFontStyle); | |
mDynamicFont.textureRebuildCallback = null; | |
} | |
+# endif | |
#endif | |
int length = text.Length; | |
int maxX = 0; | |
@@ -777,13 +787,20 @@ | |
bool useSymbols = encoding && symbolStyle != SymbolStyle.None && hasSymbols; | |
bool dynamic = isDynamic; | |
-#if DYNAMIC_FONT | |
+#if DYNAMIC_FONT_BUG_FIX | |
+ if (dynamic) | |
+ { | |
+ mDynamicFont.RequestCharactersInTexture(text, mDynamicFontSize, mDynamicFontStyle); | |
+ } | |
+#else | |
+# if DYNAMIC_FONT | |
if (dynamic) | |
{ | |
mDynamicFont.textureRebuildCallback = OnFontChanged; | |
mDynamicFont.RequestCharactersInTexture(text, mDynamicFontSize, mDynamicFontStyle); | |
mDynamicFont.textureRebuildCallback = null; | |
} | |
+# endif | |
#endif | |
while (currentCharacterIndex > 0 && remainingWidth > 0) | |
{ | |
@@ -861,7 +878,15 @@ | |
bool useSymbols = encoding && symbolStyle != SymbolStyle.None && hasSymbols; | |
bool dynamic = isDynamic; | |
-#if DYNAMIC_FONT | |
+#if DYNAMIC_FONT_BUG_FIX | |
+ // Make sure the characters are present in the dynamic font before printing them | |
+ if (dynamic) | |
+ { | |
+ mDynamicFont.RequestCharactersInTexture(text, mDynamicFontSize, mDynamicFontStyle); | |
+ } | |
+ | |
+#else | |
+# if DYNAMIC_FONT | |
// Make sure the characters are present in the dynamic font before printing them | |
if (dynamic) | |
{ | |
@@ -869,6 +894,7 @@ | |
mDynamicFont.RequestCharactersInTexture(text, mDynamicFontSize, mDynamicFontStyle); | |
mDynamicFont.textureRebuildCallback = null; | |
} | |
+# endif | |
#endif | |
// Run through all characters | |
@@ -1098,13 +1124,21 @@ | |
// Make sure the characters are present in the dynamic font before printing them | |
bool dynamic = isDynamic; | |
-#if DYNAMIC_FONT | |
+ | |
+#if DYNAMIC_FONT_BUG_FIX | |
+ if (dynamic) | |
+ { | |
+ mDynamicFont.RequestCharactersInTexture(text, mDynamicFontSize, mDynamicFontStyle); | |
+ } | |
+#else | |
+# if DYNAMIC_FONT | |
if (dynamic) | |
{ | |
mDynamicFont.textureRebuildCallback = OnFontChanged; | |
mDynamicFont.RequestCharactersInTexture(text, mDynamicFontSize, mDynamicFontStyle); | |
mDynamicFont.textureRebuildCallback = null; | |
} | |
+# endif | |
#endif | |
mColors.Clear(); | |
mColors.Add(color); | |
diff -r 6e8e22fe6d82 Assets/NGUI/Scripts/UI/UILabel.cs | |
--- a/Assets/NGUI/Scripts/UI/UILabel.cs Thu Aug 08 12:15:03 2013 +0900 | |
+++ b/Assets/NGUI/Scripts/UI/UILabel.cs Thu Aug 08 12:15:07 2013 +0900 | |
@@ -2,9 +2,11 @@ | |
// NGUI: Next-Gen UI kit | |
// Copyright © 2011-2013 Tasharen Entertainment | |
//---------------------------------------------- | |
+#define DYNAMIC_FONT_BUG_FIX | |
using UnityEngine; | |
using System.Collections.Generic; | |
+using System.Collections; | |
using System; | |
[ExecuteInEditMode] | |
@@ -110,11 +112,26 @@ | |
{ | |
if (mFont != value) | |
{ | |
+#if DYNAMIC_FONT_BUG_FIX | |
+ if (mFont != null && mFont.dynamicFont != null) | |
+ { | |
+ Debug.Log ("remove_old_font_texture_event_handler"); | |
+ mFont.dynamicFont.textureRebuildCallback -= OnFontTextureUpdated; | |
+ } | |
+#endif | |
mFont = value; | |
material = (mFont != null) ? mFont.material : null; | |
mChanged = true; | |
hasChanged = true; | |
MarkAsChanged(); | |
+ | |
+#if DYNAMIC_FONT_BUG_FIX | |
+ if (mFont != null && mFont.dynamicFont != null) | |
+ { | |
+ Debug.Log ("add_new_font_texture_event_handler"); | |
+ mFont.dynamicFont.textureRebuildCallback += OnFontTextureUpdated; | |
+ } | |
+#endif | |
} | |
} | |
} | |
@@ -674,4 +691,33 @@ | |
} | |
} | |
} | |
+ | |
+#if DYNAMIC_FONT_BUG_FIX | |
+ protected override void OnEnable () | |
+ { | |
+ base.OnEnable (); | |
+ | |
+ if (mFont != null && mFont.dynamicFont != null) | |
+ { | |
+ Debug.Log ("add_font_texture_event_handler"); | |
+ mFont.dynamicFont.textureRebuildCallback += OnFontTextureUpdated; | |
+ } | |
+ } | |
+ | |
+ protected override void OnDisable () | |
+ { | |
+ if (mFont != null && mFont.dynamicFont != null) | |
+ { | |
+ Debug.Log ("remove_font_texture_event_handler"); | |
+ mFont.dynamicFont.textureRebuildCallback -= OnFontTextureUpdated; | |
+ } | |
+ base.OnDisable (); | |
+ } | |
+ | |
+ void OnFontTextureUpdated() | |
+ { | |
+ Debug.Log ("on_font_texture_updated:" + mText); | |
+ MarkAsChanged (); | |
+ } | |
+#endif | |
} | |
diff -r 6e8e22fe6d82 Assets/NGUI/Scripts/UI/UIPanel.cs | |
--- a/Assets/NGUI/Scripts/UI/UIPanel.cs Thu Aug 08 12:15:03 2013 +0900 | |
+++ b/Assets/NGUI/Scripts/UI/UIPanel.cs Thu Aug 08 12:15:07 2013 +0900 | |
@@ -11,6 +11,8 @@ | |
#define OLD_UNITY | |
#endif | |
+#define DYNAMIC_FONT_BUG_FIX | |
+ | |
using UnityEngine; | |
using System.Collections.Generic; | |
@@ -1040,7 +1042,11 @@ | |
/// Main update function | |
/// </summary> | |
+#if DYNAMIC_FONT_BUG_FIX | |
+ void OnGUI () | |
+#else | |
void LateUpdate () | |
+#endif | |
{ | |
mUpdateTime = Time.realtimeSinceStartup; | |
UpdateTransformMatrix(); | |
@@ -1111,7 +1117,13 @@ | |
{ | |
UIWidget[] wd = GetComponentsInChildren<UIWidget>(); | |
for (int i = 0, imax = wd.Length; i < imax; ++i) wd[i].Update(); | |
+ | |
+#if DYNAMIC_FONT_BUG_FIX | |
+ OnGUI(); | |
+#else | |
LateUpdate(); | |
+#endif | |
+ | |
} | |
#if UNITY_EDITOR |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment