110 lines
6.1 KiB
C#
110 lines
6.1 KiB
C#
namespace DrawXXL
|
|
{
|
|
using UnityEngine;
|
|
|
|
[HelpURL("https://www.symphonygames.net/drawxxldocumentation/index.html")]
|
|
[AddComponentMenu("Draw XXL/Screenspace/Text Drawer Screenspace")]
|
|
[DefaultExecutionOrder(31000)] //negative numers are early, positive numbers are late. Range is till 32000 to both negative and positive direction.
|
|
public class TextDrawerScreenspace : VisualizerScreenspaceParent
|
|
{
|
|
[SerializeField] Color color = DrawBasics.defaultColor;
|
|
[SerializeField] [Range(0.001f, 1.0f)] float size_relToViewportHeight = 0.025f;
|
|
[SerializeField] DrawText.TextAnchorDXXL textAnchor = DrawText.TextAnchorDXXL.LowerLeft;
|
|
[SerializeField] public bool enclosingBox_isOutfolded = false; //is only "public" to silence the compiler warning saying that it is "never used". The compiler doesn't know that it is used via serialization.
|
|
[SerializeField] DrawBasics.LineStyle enclosingBoxLineStyle = DrawBasics.LineStyle.invisible;
|
|
[SerializeField] float enclosingBox_lineWidth_relToTextSize = 0.0f;
|
|
[SerializeField] float enclosingBox_paddingSize_relToTextSize = 0.0f;
|
|
[SerializeField] bool autoLineBreakAtScreenBorder = true;
|
|
[SerializeField] bool autoFlipTextToPreventUpsideDown = true;
|
|
|
|
[SerializeField] public bool forceTextEnlargementToThisMinWidth_relToViewportWidth_isOutfolded = false; //is only "public" to silence the compiler warning saying that it is "never used". The compiler doesn't know that it is used via serialization.
|
|
[SerializeField] bool forceTextEnlargementToThisMinWidth_relToViewportWidth = false;
|
|
[SerializeField] [Range(0.003f, 2.0f)] float forceTextEnlargementToThisMinWidth_relToViewportWidth_value = 0.1f;
|
|
|
|
[SerializeField] public bool forceRestrictTextSizeToThisMaxTextWidth_relToViewportWidth_isOutfolded = false; //is only "public" to silence the compiler warning saying that it is "never used". The compiler doesn't know that it is used via serialization.
|
|
[SerializeField] bool forceRestrictTextSizeToThisMaxTextWidth_relToViewportWidth = false;
|
|
[SerializeField] [Range(0.003f, 2.0f)] float forceRestrictTextSizeToThisMaxTextWidth_relToViewportWidth_value = 0.5f;
|
|
|
|
[SerializeField] public bool autoLineBreakWidth_relToViewportWidth_isOutfolded = false; //is only "public" to silence the compiler warning saying that it is "never used". The compiler doesn't know that it is used via serialization.
|
|
[SerializeField] bool autoLineBreakWidth_relToViewportWidth = false;
|
|
[SerializeField] [Range(0.003f, 2.0f)] float autoLineBreakWidth_relToViewportWidth_value = 0.5f;
|
|
|
|
public override void InitializeValues_onceInComponentLifetime()
|
|
{
|
|
if (text_exclGlobalMarkupTags == null || text_exclGlobalMarkupTags == "")
|
|
{
|
|
text_exclGlobalMarkupTags = "text to draw";
|
|
text_inclGlobalMarkupTags = "text to draw";
|
|
}
|
|
textSection_isOutfolded = true;
|
|
|
|
customVector2_1_picker_isOutfolded = false;
|
|
source_ofCustomVector2_1 = CustomVector2Source.rotationAroundZStartingFromRight;
|
|
customVector2_1_clipboardForManualInput = Vector2.right;
|
|
vectorInterpretation_ofCustomVector2_1 = VectorInterpretation.globalSpace;
|
|
}
|
|
|
|
public override void InitializeValues_alsoOnPlaymodeEnter_andOnComponentCreatedAsCopy()
|
|
{
|
|
TryFetchCamOnThisGO_andDecideScreenspaceDefiningCamera();
|
|
}
|
|
|
|
public override void DrawVisualizedObject()
|
|
{
|
|
Camera usedCamera = Get_usedCamera("Text Drawer Screenspace Component");
|
|
if (usedCamera != null)
|
|
{
|
|
if (text_inclGlobalMarkupTags != null && text_inclGlobalMarkupTags != "")
|
|
{
|
|
if (UtilitiesDXXL_Math.ApproximatelyZero(size_relToViewportHeight) == false)
|
|
{
|
|
float used_forceTextEnlargementToThisMinWidth_relToViewportWidth_value = Get_used_forceTextEnlargementToThisMinWidth_relToViewportWidth_value();
|
|
float used_forceRestrictTextSizeToThisMaxTextWidth_relToViewportWidth_value = Get_used_forceRestrictTextSizeToThisMaxTextWidth_relToViewportWidth_value();
|
|
float used_autoLineBreakWidth_relToViewportWidth_value = Get_used_autoLineBreakWidth_relToViewportWidth_value();
|
|
Vector2 textDir = Get_customVector2_1_inGlobalSpaceUnits();
|
|
UtilitiesDXXL_Text.WriteScreenSpace(usedCamera, text_inclGlobalMarkupTags, positionInsideViewport0to1, color, size_relToViewportHeight, textDir, textAnchor, enclosingBoxLineStyle, enclosingBox_lineWidth_relToTextSize, enclosingBox_paddingSize_relToTextSize, used_forceTextEnlargementToThisMinWidth_relToViewportWidth_value, used_forceRestrictTextSizeToThisMaxTextWidth_relToViewportWidth_value, autoLineBreakAtScreenBorder, used_autoLineBreakWidth_relToViewportWidth_value, autoFlipTextToPreventUpsideDown, 0.0f, false);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public float Get_used_forceTextEnlargementToThisMinWidth_relToViewportWidth_value()
|
|
{
|
|
if (forceTextEnlargementToThisMinWidth_relToViewportWidth)
|
|
{
|
|
return forceTextEnlargementToThisMinWidth_relToViewportWidth_value;
|
|
}
|
|
else
|
|
{
|
|
return 0.0f;
|
|
}
|
|
}
|
|
|
|
public float Get_used_forceRestrictTextSizeToThisMaxTextWidth_relToViewportWidth_value()
|
|
{
|
|
if (forceRestrictTextSizeToThisMaxTextWidth_relToViewportWidth)
|
|
{
|
|
return forceRestrictTextSizeToThisMaxTextWidth_relToViewportWidth_value;
|
|
}
|
|
else
|
|
{
|
|
return 0.0f;
|
|
}
|
|
}
|
|
|
|
public float Get_used_autoLineBreakWidth_relToViewportWidth_value()
|
|
{
|
|
if (autoLineBreakWidth_relToViewportWidth)
|
|
{
|
|
return autoLineBreakWidth_relToViewportWidth_value;
|
|
}
|
|
else
|
|
{
|
|
return 0.0f;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|