Skip to content

Commit

Permalink
Merge branch 'main' into release
Browse files Browse the repository at this point in the history
  • Loading branch information
drewcassidy committed Nov 16, 2020
2 parents f108341 + a6de537 commit a6d5869
Show file tree
Hide file tree
Showing 10 changed files with 73 additions and 25 deletions.
3 changes: 2 additions & 1 deletion GameData/ConformalDecals/Parts/decal-text.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ PART
name = ModuleConformalText

text = Text
font = Calibri SDF
fontName = Calibri SDF
fillColor = #000000FF
outlineColor = #FFFFFFFF
fillEnabled = true
Expand All @@ -62,6 +62,7 @@ PART
useBaseNormal = true
scaleMode = MINIMUM

defaultScale = 0.2
defaultDepth = 0.2
defaultCutoff = 0.5
}
Expand Down
Binary file modified GameData/ConformalDecals/Plugins/ConformalDecals.dll
Binary file not shown.
4 changes: 2 additions & 2 deletions GameData/ConformalDecals/Versioning/ConformalDecals.version
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
{
"MAJOR":0,
"MINOR":2,
"PATCH":3,
"BUILD":1
"PATCH":4,
"BUILD":0
},
"KSP_VERSION":
{
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Conformal Decals v0.2.3
# Conformal Decals v0.2.4
[![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)
Expand Down
18 changes: 9 additions & 9 deletions Source/ConformalDecals/ModuleConformalDecal.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public enum DecalScaleMode {

[KSPField] public bool scaleAdjustable = true;
[KSPField] public float defaultScale = 1;
[KSPField] public Vector2 scaleRange = new Vector2(0, 4);
[KSPField] public Vector2 scaleRange = new Vector2(0, 5);

[KSPField] public DecalScaleMode scaleMode = DecalScaleMode.HEIGHT;

Expand Down Expand Up @@ -60,19 +60,19 @@ public enum DecalScaleMode {

// INTERNAL VALUES
[KSPField(guiName = "#LOC_ConformalDecals_gui-scale", guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "F2", guiUnits = "m"),
UI_FloatRange(stepIncrement = 0.05f)]
UI_FloatRange()]
public float scale = 1.0f;

[KSPField(guiName = "#LOC_ConformalDecals_gui-depth", guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "F2", guiUnits = "m"),
UI_FloatRange(stepIncrement = 0.02f)]
UI_FloatRange()]
public float depth = 0.2f;

[KSPField(guiName = "#LOC_ConformalDecals_gui-opacity", guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "P0"),
UI_FloatRange(stepIncrement = 0.05f)]
UI_FloatRange()]
public float opacity = 1.0f;

[KSPField(guiName = "#LOC_ConformalDecals_gui-cutoff", guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "P0"),
UI_FloatRange(stepIncrement = 0.05f)]
UI_FloatRange()]
public float cutoff = 0.5f;

[KSPField(guiName = "#LOC_ConformalDecals_gui-wear", guiActive = false, guiActiveEditor = true, isPersistant = true, guiFormat = "F0"),
Expand Down Expand Up @@ -215,7 +215,7 @@ public enum DecalScaleMode {
foreach (var keyword in _decalMaterial.shaderKeywords) {
this.Log($"keyword: {keyword}");
}

if (HighLogic.LoadedSceneIsEditor) {
UpdateTweakables();
}
Expand Down Expand Up @@ -512,7 +512,7 @@ public enum DecalScaleMode {
cutoffField.guiActiveEditor = cutoffAdjustable;
wearField.guiActiveEditor = useBaseNormal;

var steps = 40;
var steps = 20;

if (scaleAdjustable) {
var minValue = Mathf.Max(Mathf.Epsilon, scaleRange.x);
Expand All @@ -521,7 +521,7 @@ public enum DecalScaleMode {
var scaleEditor = (UI_FloatRange) scaleField.uiControlEditor;
scaleEditor.minValue = minValue;
scaleEditor.maxValue = maxValue;
scaleEditor.stepIncrement = (maxValue - minValue) / steps;
scaleEditor.stepIncrement = 0.01f; //1cm
scaleEditor.onFieldChanged = OnSizeTweakEvent;
}

Expand All @@ -532,7 +532,7 @@ public enum DecalScaleMode {
var depthEditor = (UI_FloatRange) depthField.uiControlEditor;
depthEditor.minValue = minValue;
depthEditor.maxValue = maxValue;
depthEditor.stepIncrement = (maxValue - minValue) / steps;
depthEditor.stepIncrement = 0.01f; //1cm
depthEditor.onFieldChanged = OnSizeTweakEvent;
}

Expand Down
27 changes: 20 additions & 7 deletions Source/ConformalDecals/ModuleConformalText.cs
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,25 @@ public class ModuleConformalText : ModuleConformalDecal {

public override void OnLoad(ConfigNode node) {
base.OnLoad(node);
text = WebUtility.UrlDecode(ParseUtil.ParseString(node, "text"));
font = DecalConfig.GetFont(ParseUtil.ParseString(node, "font", true, "Calibri SDF"));

string textRaw = "";
if (ParseUtil.ParseStringIndirect(ref textRaw, node, "text")) {
text = WebUtility.UrlDecode(textRaw);
}

string fontName = "";
if (ParseUtil.ParseStringIndirect(ref fontName, node, "fontName")) {
font = DecalConfig.GetFont(fontName);
}
else if (font == null) font = DecalConfig.GetFont("Calibri SDF");

int styleInt = 0;
if (ParseUtil.ParseIntIndirect(ref styleInt, node, "style")) style = (FontStyles) styleInt;
if (!ParseUtil.ParseColor32Indirect(ref fillColor, node, "fillColor")) fillColor = Color.magenta;
if (!ParseUtil.ParseColor32Indirect(ref outlineColor, node, "outlineColor")) outlineColor = Color.magenta;
if (ParseUtil.ParseIntIndirect(ref styleInt, node, "style")) {
style = (FontStyles) styleInt;
}

ParseUtil.ParseColor32Indirect(ref fillColor, node, "fillColor");
ParseUtil.ParseColor32Indirect(ref outlineColor, node, "outlineColor");

if (HighLogic.LoadedSceneIsGame) {
// For some reason, rendering doesnt work right on the first frame a scene is loaded
Expand Down Expand Up @@ -210,12 +223,12 @@ public class ModuleConformalText : ModuleConformalDecal {

public override void OnDestroy() {
if (HighLogic.LoadedSceneIsGame && _currentText != null) TextRenderer.UnregisterText(_currentText);

// close all UIs
if (_textEntryController != null) _textEntryController.Close();
if (_fillColorPickerController != null) _fillColorPickerController.Close();
if (_outlineColorPickerController != null) _outlineColorPickerController.Close();

base.OnDestroy();
}

Expand Down
1 change: 1 addition & 0 deletions Source/ConformalDecals/Text/DecalText.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public class DecalText : IEquatable<DecalText> {
/// The text formatted with newlines for vertical text
public string FormattedText {
get {
if (string.IsNullOrWhiteSpace(Text)) return "";
if (Vertical) {
return Regex.Replace(Text, @"(.)", "$1\n");
}
Expand Down
5 changes: 3 additions & 2 deletions Source/ConformalDecals/Text/TextRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -272,13 +272,14 @@ public class TextRenderEvent : UnityEvent<TextRenderOutput> { }
}
}

GL.PopMatrix();

// COPY TEXTURE BACK INTO RAM
RenderTexture.active = renderTex;
texture.ReadPixels(new Rect(0, 0, textureSize.x, textureSize.y), 0, 0, true);
texture.Apply();

GL.Clear(false, true, Color.black); //KSP doesnt clear render textures before using them so we need to clear afterwards, as well. Thanks Squad.
GL.PopMatrix();

// RELEASE RENDERTEX
RenderTexture.ReleaseTemporary(renderTex);

Expand Down
27 changes: 24 additions & 3 deletions Source/ConformalDecals/UI/TextEntryController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ public class TextEntryController : MonoBehaviour {
[Serializable]
public delegate void TextUpdateDelegate(string newText, DecalFont newFont, FontStyles style, bool vertical, float linespacing, float charspacing);


[SerializeField] private Selectable _textBox;
[SerializeField] private Button _fontButton;

Expand Down Expand Up @@ -40,7 +39,10 @@ public class TextEntryController : MonoBehaviour {

private FontMenuController _fontMenu;

private bool _ignoreUpdates;
private bool _ignoreUpdates;
private bool _isLocked;
private string _lockString;
private static int _lockCounter;

public static TextEntryController Create(
string text, DecalFont font, FontStyles style, bool vertical, float linespacing, float charspacing,
Expand Down Expand Up @@ -70,6 +72,18 @@ public class TextEntryController : MonoBehaviour {
Destroy(gameObject);
}

public void SetControlLock(string value = null) {
if (_isLocked) return;
InputLockManager.SetControlLock(_lockString);
_isLocked = true;
}

public void RemoveControlLock(string value = null) {
if (!_isLocked) return;
InputLockManager.RemoveControlLock(_lockString);
_isLocked = false;
}

public void OnTextUpdate(string newText) {
this._text = newText;

Expand Down Expand Up @@ -195,12 +209,15 @@ public class TextEntryController : MonoBehaviour {
OnValueChanged();
}


private void Start() {
_lockString = $"ConformalDecals_TextEditor_{_lockCounter++}";

_textBoxTMP = ((TMP_InputField) _textBox);
_textBoxTMP.text = _text;
_textBoxTMP.textComponent.fontStyle = _style | _font.FontStyle & ~_font.FontStyleMask;
_textBoxTMP.fontAsset = _font.FontAsset;
_textBoxTMP.onSelect.AddListener(SetControlLock);
_textBoxTMP.onDeselect.AddListener(RemoveControlLock);

_font.SetupSample(_fontButton.GetComponentInChildren<TextMeshProUGUI>());

Expand All @@ -209,6 +226,10 @@ public class TextEntryController : MonoBehaviour {
UpdateCharSpacing();
}

private void OnDestroy() {
RemoveControlLock();
}

private void OnValueChanged() {
_onValueChanged(_text, _font, _style, _vertical, _lineSpacing, _charSpacing);
}
Expand Down
11 changes: 11 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
v0.2.4
------
- Fixes:
- Fixed red text appearing on planets due to KSP bug by clearing render textures afterwards.
- Fixed fonts not saving correctly.
- Changes:
- Lowered step size for decal size and depth to 1cm.
- Changed default max size to 5m.
- Changed default text decal size to 0.2m
- Text decals now show as a circle if they contain only whitespace.

v0.2.3
------
- Fixes:
Expand Down

0 comments on commit a6d5869

Please sign in to comment.