Fix corrupted text rendering

Fix text corruption when rendering text right after a scene change by delaying it by a single frame in OnLoad
hotfix
Andrew Cassidy 4 years ago
parent 98a790630e
commit 1ebed608a8

@ -6,7 +6,7 @@
{
"MAJOR":0,
"MINOR":2,
"PATCH":1,
"PATCH":2,
"BUILD":0
},
"KSP_VERSION":

@ -1,4 +1,4 @@
# Conformal Decals v0.2.1
# Conformal Decals v0.2.2
[![Build Status](https://travis-ci.org/drewcassidy/KSP-Conformal-Decals.svg?branch=release)](https://travis-ci.org/drewcassidy/KSP-Conformal-Decals) [![Art: CC BY-SA 4.0](https://img.shields.io/badge/Art%20License-CC%20BY--SA%204.0-orange.svg)](https://creativecommons.org/licenses/by-sa/4.0/) [![Code: GPL v3](https://img.shields.io/badge/Code%20License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
![Screenshot](http://pileof.rocks/KSP/images/ConformalDecalsHeader.png)

@ -1,3 +1,4 @@
using System.Collections;
using ConformalDecals.MaterialProperties;
using ConformalDecals.Text;
using ConformalDecals.UI;
@ -99,7 +100,15 @@ namespace ConformalDecals {
base.OnLoad(node);
OnAfterDeserialize();
UpdateTextRecursive();
if (HighLogic.LoadedSceneIsGame) {
// For some reason, rendering doesnt work right on the first frame a scene is loaded
// So delay any rendering until the next frame when called in OnLoad
// This is probably a problem with Unity, not KSP
StartCoroutine(UpdateTextLate());
}
else {
UpdateText();
}
}
public override void OnSave(ConfigNode node) {
@ -107,12 +116,6 @@ namespace ConformalDecals {
base.OnSave(node);
}
public override void OnStart(StartState state) {
base.OnStart(state);
UpdateTextRecursive();
}
public override void OnAwake() {
base.OnAwake();
@ -210,7 +213,7 @@ namespace ConformalDecals {
public void OnAfterDeserialize() {
_font = DecalConfig.GetFont(fontName);
_style = new DecalTextStyle((FontStyles) style, vertical, lineSpacing, charSpacing);
if (!ParseUtil.TryParseColor32(fillColor, out _fillColor)) {
Logging.LogWarning($"Improperly formatted color value for fill: '{fillColor}'");
_fillColor = Color.magenta;
@ -252,6 +255,11 @@ namespace ConformalDecals {
}
}
private IEnumerator UpdateTextLate() {
yield return null;
UpdateText();
}
private void UpdateText() {
// Render text
var newText = new DecalText(text, _font, _style);

@ -257,6 +257,7 @@ namespace ConformalDecals.Text {
Graphics.SetRenderTarget(renderTex);
GL.PushMatrix();
GL.LoadProjectionMatrix(matrix);
GL.LoadIdentity();
GL.Clear(false, true, Color.black);
for (var i = 0; i < meshes.Length; i++) {

@ -1,8 +1,13 @@
v0.2.2
------
- Fixes:
- Fixed corrupted text rendering when a vessel loads during a scene change.
v0.2.1
------
- Changes
- Changes:
- Pressing enter in the text entry window now types a newline.
- Fixes
- Fixes:
- Renamed font assetbundle. The old extension was causing the game to try to load it twice on Windows due to legacy compatability features.
- Fixed text rendering on DirectX resulting in black boxes by using ARGB32 instead of RG16 for the render texture in DirectX.

Loading…
Cancel
Save