59 lines
3.0 KiB
C#
59 lines
3.0 KiB
C#
namespace DrawXXL
|
|
{
|
|
using UnityEngine;
|
|
|
|
[HelpURL("https://www.symphonygames.net/drawxxldocumentation/index.html")]
|
|
[AddComponentMenu("Draw XXL/Coordinate Axes Gizmo Visualizer")]
|
|
[DefaultExecutionOrder(31000)] //negative numers are early, positive numbers are late. Range is till 32000 to both negative and positive direction.
|
|
public class CoordinateAxesGizmoVisualizer : VisualizerParent
|
|
{
|
|
public enum VisualizedSpace { global, localDefinedByParent, localDefinedByThis };
|
|
[SerializeField] VisualizedSpace visualizedSpace = VisualizedSpace.global;
|
|
[SerializeField] bool drawXYZchars = true;
|
|
[SerializeField] bool skipConeDrawing = false;
|
|
[SerializeField] bool forceAllAxesLength = false;
|
|
[SerializeField] float forceAllAxesLength_lengthValue = 1.0f;
|
|
[SerializeField] [Range(0.0f, 1.0f)] float lineWidth = 0.025f;
|
|
|
|
public override void InitializeValues_onceInComponentLifetime()
|
|
{
|
|
TrySetTextToEmptyString();
|
|
}
|
|
|
|
public override void DrawVisualizedObject()
|
|
{
|
|
float used_forceAxesLength_forLocal = forceAllAxesLength ? forceAllAxesLength_lengthValue : 0.0f;
|
|
bool aParentHasANonUniformScale;
|
|
switch (visualizedSpace)
|
|
{
|
|
case VisualizedSpace.global:
|
|
DrawGizmoForGlobalSpace();
|
|
break;
|
|
case VisualizedSpace.localDefinedByParent:
|
|
if (transform.parent == null)
|
|
{
|
|
DrawGizmoForGlobalSpace();
|
|
}
|
|
else
|
|
{
|
|
aParentHasANonUniformScale = UtilitiesDXXL_EngineBasics.CheckIf_transformOrAParentHasNonUniformScale(transform.parent.parent);
|
|
UtilitiesDXXL_EngineBasics.CoordinateAxesGizmoLocal(GetDrawPos3D_global(), transform.parent.rotation, transform.parent.lossyScale, used_forceAxesLength_forLocal, lineWidth, text_inclGlobalMarkupTags, drawXYZchars, skipConeDrawing, 0.0f, hiddenByNearerObjects, aParentHasANonUniformScale);
|
|
}
|
|
break;
|
|
case VisualizedSpace.localDefinedByThis:
|
|
aParentHasANonUniformScale = UtilitiesDXXL_EngineBasics.CheckIf_transformOrAParentHasNonUniformScale(transform.parent);
|
|
UtilitiesDXXL_EngineBasics.CoordinateAxesGizmoLocal(GetDrawPos3D_global(), transform.rotation, transform.lossyScale, used_forceAxesLength_forLocal, lineWidth, text_inclGlobalMarkupTags, drawXYZchars, skipConeDrawing, 0.0f, hiddenByNearerObjects, aParentHasANonUniformScale);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void DrawGizmoForGlobalSpace()
|
|
{
|
|
UtilitiesDXXL_EngineBasics.CoordinateAxesGizmoLocal(GetDrawPos3D_global(), Quaternion.identity, default(Vector3), forceAllAxesLength_lengthValue, lineWidth, text_inclGlobalMarkupTags, drawXYZchars, skipConeDrawing, 0.0f, hiddenByNearerObjects, false);
|
|
}
|
|
}
|
|
|
|
}
|