From cdc8794c5483f2310123ff6b9ef0ccde878d8a1f Mon Sep 17 00:00:00 2001 From: drewcassidy Date: Sun, 26 Jul 2020 19:32:58 -0700 Subject: [PATCH] Various text rendering changes --- .../ConformalDecals/Localization/en-us.cfg | 8 + .../Plugins/ConformalDecals.dll | Bin 80896 -> 82944 bytes Source/ConformalDecals/ConformalDecals.csproj | 2 +- Source/ConformalDecals/ModuleConformalText.cs | 143 +++++++++++++++--- Source/ConformalDecals/Text/TextRenderJob.cs | 14 +- .../{RenderedText.cs => TextRenderOutput.cs} | 4 +- Source/ConformalDecals/Text/TextRenderer.cs | 64 ++++---- 7 files changed, 171 insertions(+), 64 deletions(-) rename Source/ConformalDecals/Text/{RenderedText.cs => TextRenderOutput.cs} (73%) diff --git a/GameData/ConformalDecals/Localization/en-us.cfg b/GameData/ConformalDecals/Localization/en-us.cfg index aa55ce9..022d7ab 100644 --- a/GameData/ConformalDecals/Localization/en-us.cfg +++ b/GameData/ConformalDecals/Localization/en-us.cfg @@ -18,6 +18,14 @@ Localization #LOC_ConformalDecals_gui-aspectratio = Aspect Ratio #LOC_ConformalDecals_gui-select-flag = Select Flag #LOC_ConformalDecals_gui-reset-flag = Reset Flag + #LOC_ConformalDecals_gui-set-text = Set Text + #LOC_ConformalDecals_gui-group-fill = Fill + #LOC_ConformalDecals_gui-group-outline = Outline + #LOC_ConformalDecals_gui-fill = Fill + #LOC_ConformalDecals_gui-set-fill-color = Set Fill Color + #LOC_ConformalDecals_gui-outline = Outline + #LOC_ConformalDecals_gui-outline-width = Outline Width + #LOC_ConformalDecals_gui-set-outline-color = Set Outline Color // PARTS diff --git a/GameData/ConformalDecals/Plugins/ConformalDecals.dll b/GameData/ConformalDecals/Plugins/ConformalDecals.dll index abddca6459a34371d21097e8694c908271c8b153..b27fa72f54a1d3e97a002a3c9e3572ffd6da5a9a 100644 GIT binary patch literal 82944 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 QfA5X^w{I`A^)mDQ%z*aIjuJq)NQ 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 z lI%znB2Wk`?8mG*DHjE_Dk#)l1f!mPq2j_sR|%T5`W+WgB$XZhIdl{`uGis$7f hAvgMQfw#)XalWFzeykx#_^};Vl=}ZC`hScA{~NfDu=xN0 diff --git a/Source/ConformalDecals/ConformalDecals.csproj b/Source/ConformalDecals/ConformalDecals.csproj index b6a10d0..fd8404b 100644 --- a/Source/ConformalDecals/ConformalDecals.csproj +++ b/Source/ConformalDecals/ConformalDecals.csproj @@ -89,7 +89,7 @@ - + diff --git a/Source/ConformalDecals/ModuleConformalText.cs b/Source/ConformalDecals/ModuleConformalText.cs index 6e3615a..018e204 100644 --- a/Source/ConformalDecals/ModuleConformalText.cs +++ b/Source/ConformalDecals/ModuleConformalText.cs @@ -1,38 +1,129 @@ using ConformalDecals.Text; using ConformalDecals.UI; +using ConformalDecals.Util; +using TMPro; using UnityEngine; namespace ConformalDecals { - public class ModuleConformalText : ModuleConformalDecal { - [KSPField(isPersistant = true)] public string text = "Hello World!"; + public class ModuleConformalText : ModuleConformalDecal, ISerializationCallbackReceiver { + [KSPField(isPersistant = true)] public string text = "Hello World!"; + [KSPField(isPersistant = true)] public Color fillColor = Color.black; + [KSPField(isPersistant = true)] public Color outlineColor = Color.white; + + // serialization-only fields. do not use except in serialization functions [KSPField(isPersistant = true)] public string fontName = "Calibri SDF"; [KSPField(isPersistant = true)] public int style; [KSPField(isPersistant = true)] public bool vertical; - [KSPField(isPersistant = true)] public Color fillColor = Color.black; - [KSPField(isPersistant = true)] public Color outlineColor = Color.white; - [KSPField(isPersistant = true)] public float outlineWidth; + [KSPField(isPersistant = true)] public float lineSpacing; + [KSPField(isPersistant = true)] public float characterSpacing; + + // KSP TWEAKABLES + + [KSPEvent(guiName = "#LOC_ConformalDecals_gui-set-text", guiActive = false, guiActiveEditor = true)] + public void SetText() { + if (_textEntryController == null) { + _textEntryController = TextEntryController.Create(text, _font, _style, OnTextUpdate); + } + } + + // FILL + + [KSPField(guiName = "#LOC_ConformalDecals_gui-fill", groupName = "decal-fill", groupDisplayName = "#LOC_ConformalDecals_gui-group-fill", + guiActive = false, guiActiveEditor = true, isPersistant = true), + UI_Toggle()] + public bool fillEnabled = true; + + [KSPEvent(guiName = "#LOC_ConformalDecals_gui-fill-color", groupName = "decal-fill", groupDisplayName = "#LOC_ConformalDecals_gui-group-fill", + guiActive = false, guiActiveEditor = true)] + public void SetFillColor() { + if (_fillColorPickerController == null) { + _fillColorPickerController = ColorPickerController.Create(fillColor, OnFillColorUpdate); + } + } + + // OUTLINE + + [KSPField(guiName = "#LOC_ConformalDecals_gui-outline", groupName = "decal-outline", groupDisplayName = "#LOC_ConformalDecals_gui-group-outline", + guiActive = false, guiActiveEditor = true, isPersistant = true), + UI_Toggle()] + public bool outlineEnabled; + + [KSPField(guiName = "#LOC_ConformalDecals_gui-outline-width", groupName = "decal-outline", groupDisplayName = "#LOC_ConformalDecals_gui-group-outline", + guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "F2"), + UI_FloatRange(stepIncrement = 0.05f)] + public float outlineWidth = 0.1f; + + [KSPEvent(guiName = "#LOC_ConformalDecals_gui-set-outline-color", groupName = "decal-outline", groupDisplayName = "#LOC_ConformalDecals_gui-group-outline", + guiActive = false, guiActiveEditor = true)] + public void SetOutlineColor() { + if (_outlineColorPickerCOntroller == null) { + _outlineColorPickerCOntroller = ColorPickerController.Create(outlineColor, OnOutlineColorUpdate); + } + } private DecalTextStyle _style; - private DecalFont _font; - + private DecalFont _font; + private TextEntryController _textEntryController; private ColorPickerController _fillColorPickerController; private ColorPickerController _outlineColorPickerCOntroller; + public override void OnLoad(ConfigNode node) { + base.OnLoad(node); + OnAfterDeserialize(); + } + + public override void OnSave(ConfigNode node) { + OnBeforeSerialize(); + base.OnSave(node); + } + public override void OnStart(StartState state) { base.OnStart(state); _font = DecalConfig.GetFont(fontName); _style = new DecalTextStyle(); + // handle tweakables + + if (HighLogic.LoadedSceneIsEditor) { + GameEvents.onEditorPartEvent.Add(OnEditorEvent); + } - var decalText = new DecalText("Hello World!", _font, _style); - //TextRenderer.Instance.RenderText(decalText, out var texture, out var window); //materialProperties.AddOrGetTextureProperty("_Decal", true).Texture = texture; UpdateMaterials(); UpdateScale(); } + public override void OnDestroy() { + base.OnDestroy(); + this.Log("OnDestroy"); + + if (HighLogic.LoadedSceneIsEditor) { + GameEvents.onEditorPartEvent.Remove(OnEditorEvent); + } + } + + public void OnPartDeleted() { + this.Log("OnPartDeleted"); + } + + public void OnPartSymmetryDeleted() { + this.Log("OnPartSymmetryDeleted"); + } + + protected new void OnEditorEvent(ConstructionEventType eventType, Part eventPart) { + if (eventPart != part) return; + switch (eventType) { + case ConstructionEventType.PartSymmetryDeleted: + OnPartSymmetryDeleted(); + break; + case ConstructionEventType.PartDeleted: + OnPartDeleted(); + break; + } + } + public void OnTextUpdate(string newText, DecalFont newFont, DecalTextStyle newStyle) { text = newText; _font = newFont; @@ -40,32 +131,40 @@ namespace ConformalDecals { } public void OnFillColorUpdate(Color rgb, Util.ColorHSV hsv) { + fillColor = rgb; Debug.Log($"new fill color: {rgb}, {hsv}"); } public void OnOutlineColorUpdate(Color rgb, Util.ColorHSV hsv) { + outlineColor = rgb; Debug.Log($"new outline color: {rgb}, {hsv}"); } - [KSPEvent(guiActive = false, guiActiveEditor = true, guiName = "#LOC_ConformalDecals_gui-select-flag")] - public void SetText() { - if (_textEntryController == null) { - _textEntryController = TextEntryController.Create(text, _font, _style, OnTextUpdate); + public void OnFillToggle() { + if (!fillEnabled && !outlineEnabled) { + outlineEnabled = true; + OnOutlineToggle(); } } - [KSPEvent(guiActive = false, guiActiveEditor = true, guiName = "Set Fill Color")] - public void SetFillColor() { - if (_fillColorPickerController == null) { - _fillColorPickerController = ColorPickerController.Create(fillColor, OnFillColorUpdate); + public void OnOutlineToggle() { + if (!fillEnabled && !outlineEnabled) { + fillEnabled = true; + OnFillToggle(); } } - [KSPEvent(guiActive = false, guiActiveEditor = true, guiName = "Set Outline Color")] - public void SetOutlineColor() { - if (_outlineColorPickerCOntroller == null) { - _outlineColorPickerCOntroller = ColorPickerController.Create(outlineColor, OnOutlineColorUpdate); - } + public void OnBeforeSerialize() { + fontName = _font.Name; + style = (int) _style.FontStyle; + vertical = _style.Vertical; + lineSpacing = _style.LineSpacing; + characterSpacing = _style.CharacterSpacing; + } + + public void OnAfterDeserialize() { + _font = DecalConfig.GetFont(fontName); + _style = new DecalTextStyle((FontStyles) style, vertical, lineSpacing, characterSpacing); } } } \ No newline at end of file diff --git a/Source/ConformalDecals/Text/TextRenderJob.cs b/Source/ConformalDecals/Text/TextRenderJob.cs index 0d17cbd..b1128ce 100644 --- a/Source/ConformalDecals/Text/TextRenderJob.cs +++ b/Source/ConformalDecals/Text/TextRenderJob.cs @@ -10,19 +10,19 @@ namespace ConformalDecals.Text { public bool IsDone { get; private set; } public readonly TextRenderer.TextRenderEvent onRenderFinished = new TextRenderer.TextRenderEvent(); - - public TextRenderJob(DecalText oldText, DecalText newText, UnityAction renderFinishedCallback) { + + public TextRenderJob(DecalText oldText, DecalText newText, UnityAction renderFinishedCallback) { OldText = oldText ?? throw new ArgumentNullException(nameof(oldText)); NewText = newText ?? throw new ArgumentNullException(nameof(newText)); Needed = true; - + if (renderFinishedCallback != null) onRenderFinished.AddListener(renderFinishedCallback); } - - public TextRenderJob( DecalText newText, UnityAction renderFinishedCallback) { + + public TextRenderJob(DecalText newText, UnityAction renderFinishedCallback) { NewText = newText ?? throw new ArgumentNullException(nameof(newText)); Needed = true; - + if (renderFinishedCallback != null) onRenderFinished.AddListener(renderFinishedCallback); } @@ -34,7 +34,7 @@ namespace ConformalDecals.Text { IsStarted = true; } - public void Finish(RenderedText output) { + public void Finish(TextRenderOutput output) { IsDone = true; onRenderFinished.Invoke(output); } diff --git a/Source/ConformalDecals/Text/RenderedText.cs b/Source/ConformalDecals/Text/TextRenderOutput.cs similarity index 73% rename from Source/ConformalDecals/Text/RenderedText.cs rename to Source/ConformalDecals/Text/TextRenderOutput.cs index fc31ae4..f90caa0 100644 --- a/Source/ConformalDecals/Text/RenderedText.cs +++ b/Source/ConformalDecals/Text/TextRenderOutput.cs @@ -1,14 +1,14 @@ using UnityEngine; namespace ConformalDecals.Text { - public class RenderedText { + public class TextRenderOutput { public Texture2D Texture { get; private set; } public Rect Window { get; private set; } public int UserCount { get; set; } - public RenderedText(Texture2D texture, Rect window) { + public TextRenderOutput(Texture2D texture, Rect window) { Texture = texture; Window = window; } diff --git a/Source/ConformalDecals/Text/TextRenderer.cs b/Source/ConformalDecals/Text/TextRenderer.cs index 8cd57df..d07d882 100644 --- a/Source/ConformalDecals/Text/TextRenderer.cs +++ b/Source/ConformalDecals/Text/TextRenderer.cs @@ -21,7 +21,7 @@ namespace ConformalDecals.Text { } [Serializable] - public class TextRenderEvent : UnityEvent { } + public class TextRenderEvent : UnityEvent { } private const string BlitShader = "ConformalDecals/Text Blit"; private const int MaxTextureSize = 4096; @@ -34,26 +34,26 @@ namespace ConformalDecals.Text { private TextMeshPro _tmp; private Material _blitMaterial; - private readonly Dictionary _renderCache = new Dictionary(); - private readonly Queue _renderJobs = new Queue(); + private static readonly Dictionary RenderCache = new Dictionary(); + private static readonly Queue RenderJobs = new Queue(); - public TextRenderJob RenderText(DecalText text, UnityAction renderFinishedCallback) { + public static TextRenderJob RenderText(DecalText text, UnityAction renderFinishedCallback) { var job = new TextRenderJob(text, renderFinishedCallback); - _renderJobs.Enqueue(job); + RenderJobs.Enqueue(job); return job; } - public TextRenderJob UpdateText(DecalText oldText, DecalText newText, UnityAction renderFinishedCallback) { + public static TextRenderJob UpdateText(DecalText oldText, DecalText newText, UnityAction renderFinishedCallback) { var job = new TextRenderJob(oldText, newText, renderFinishedCallback); - _renderJobs.Enqueue(job); + RenderJobs.Enqueue(job); return job; } - public void UnregisterText(DecalText text) { - if (_renderCache.TryGetValue(text, out var renderedText)) { + public static void UnregisterText(DecalText text) { + if (RenderCache.TryGetValue(text, out var renderedText)) { renderedText.UserCount--; if (renderedText.UserCount <= 0) { - _renderCache.Remove(text); + RenderCache.Remove(text); Destroy(renderedText.Texture); } } @@ -70,13 +70,12 @@ namespace ConformalDecals.Text { } private void Update() { - TextRenderJob nextJob; + bool renderNeeded; do { - if (_renderJobs.Count <= 0) return; - nextJob = _renderJobs.Dequeue(); - } while (nextJob.Needed); - - RunJob(nextJob); + if (RenderJobs.Count <= 0) return; + var nextJob = RenderJobs.Dequeue(); + renderNeeded = nextJob.Needed && RunJob(nextJob); + } while (!renderNeeded); } private void Setup() { @@ -94,47 +93,48 @@ namespace ConformalDecals.Text { _isSetup = true; } - private void RunJob(TextRenderJob job) { - Debug.Log($"Starting Text Rendering Job. queue depth = {_renderJobs.Count}, cache size = {_renderCache.Count}"); + private bool RunJob(TextRenderJob job) { + Debug.Log($"Starting Text Rendering Job. queue depth = {RenderJobs.Count}, cache size = {RenderCache.Count}"); job.Start(); - + Texture2D texture = null; - if (job.OldText != null && _renderCache.TryGetValue(job.OldText, out var oldRender)) { + if (job.OldText != null && RenderCache.TryGetValue(job.OldText, out var oldRender)) { // old output still exists oldRender.UserCount--; - + if (oldRender.UserCount <= 0) { // this is the only usage of this output, so we are free to re-render into the texture Debug.Log("Render output is not shared with other users, so reusing texture and removing cache slot"); - + texture = oldRender.Texture; - _renderCache.Remove(job.OldText); + RenderCache.Remove(job.OldText); } else { // other things are using this render output, so decriment usercount, and we'll make a new entry instead Debug.Log("Render output is shared with other users, so making new output"); } } - + // now that all old references are handled, begin rendering the new output - if (_renderCache.TryGetValue(job.NewText, out var cachedRender)) { + if (RenderCache.TryGetValue(job.NewText, out var cachedRender)) { Debug.Log("Using Cached Render Output"); - Debug.Log($"Finished Text Rendering Job. queue depth = {_renderJobs.Count}, cache size = {_renderCache.Count}"); + Debug.Log($"Finished Text Rendering Job. queue depth = {RenderJobs.Count}, cache size = {RenderCache.Count}"); cachedRender.UserCount++; - return; + return false; } var output = RenderText(job.NewText, texture); - _renderCache.Add(job.NewText, output); - + RenderCache.Add(job.NewText, output); + job.Finish(output); - Debug.Log($"Finished Text Rendering Job. queue depth = {_renderJobs.Count}, cache size = {_renderCache.Count}"); + Debug.Log($"Finished Text Rendering Job. queue depth = {RenderJobs.Count}, cache size = {RenderCache.Count}"); + return true; } - public RenderedText RenderText(DecalText text, Texture2D texture) { + public TextRenderOutput RenderText(DecalText text, Texture2D texture) { // SETUP TMP OBJECT FOR RENDERING _tmp.text = text.FormattedText; _tmp.font = text.Font.FontAsset; @@ -220,7 +220,7 @@ namespace ConformalDecals.Text { // RELEASE RENDERTEX RenderTexture.ReleaseTemporary(renderTex); - return new RenderedText(texture, window); + return new TextRenderOutput(texture, window); } } } \ No newline at end of file