Fix text rendering user counter for new renders

This commit is contained in:
Andrew Cassidy 2020-09-26 11:32:41 -07:00
parent e4adf28c4f
commit b8d728342c
No known key found for this signature in database
GPG Key ID: 963017B38FD477A1
2 changed files with 10 additions and 4 deletions

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:24dc0d4b3ee3e591a1fc612f1b8e4bdf7978ed3d4baa4d1c3f9d15452d9e353a oid sha256:30a4feb4c4ae642efff196aa35771db01257ffad1956a737f868a2dc11628b95
size 87040 size 87552

View File

@ -6,7 +6,7 @@ using UnityEngine;
using UnityEngine.Events; using UnityEngine.Events;
namespace ConformalDecals.Text { namespace ConformalDecals.Text {
[KSPAddon(KSPAddon.Startup.EveryScene, false)] [KSPAddon(KSPAddon.Startup.Instantly, true)]
public class TextRenderer : MonoBehaviour { public class TextRenderer : MonoBehaviour {
public const TextureFormat TextTextureFormat = TextureFormat.RG16; public const TextureFormat TextTextureFormat = TextureFormat.RG16;
public const RenderTextureFormat TextRenderTextureFormat = RenderTextureFormat.R8; public const RenderTextureFormat TextRenderTextureFormat = RenderTextureFormat.R8;
@ -52,7 +52,9 @@ namespace ConformalDecals.Text {
return Instance.RunJob(new TextRenderJob(oldText, newText, null), out _); return Instance.RunJob(new TextRenderJob(oldText, newText, null), out _);
} }
// Unregister a user of a piece of text
public static void UnregisterText(DecalText text) { public static void UnregisterText(DecalText text) {
Debug.Log($"[ConformalDecals] Unregistering text '{text.Text}'");
if (RenderCache.TryGetValue(text, out var renderedText)) { if (RenderCache.TryGetValue(text, out var renderedText)) {
renderedText.UserCount--; renderedText.UserCount--;
if (renderedText.UserCount <= 0) { if (renderedText.UserCount <= 0) {
@ -102,7 +104,10 @@ namespace ConformalDecals.Text {
return null; return null;
} }
Debug.Log($"Starting Text Rendering Job. queue depth = {RenderJobs.Count}, cache size = {RenderCache.Count}"); Debug.Log($"[ConformalDecals] Starting Text Rendering Job. queue depth = {RenderJobs.Count}, cache size = {RenderCache.Count}");
foreach (var cacheitem in RenderCache) {
Debug.Log($"[ConformalDecals] Cache item: '{cacheitem.Key.Text}' with {cacheitem.Value.UserCount} users");
}
job.Start(); job.Start();
Texture2D texture = null; Texture2D texture = null;
@ -137,6 +142,7 @@ namespace ConformalDecals.Text {
} }
var output = RenderText(job.NewText, texture); var output = RenderText(job.NewText, texture);
output.UserCount++;
RenderCache.Add(job.NewText, output); RenderCache.Add(job.NewText, output);
job.Finish(output); job.Finish(output);