mirror of
https://github.com/RHeavenStudio/HeavenStudio.git
synced 2025-06-13 10:07:37 +02:00
Editor stuff
This commit is contained in:
@ -0,0 +1,84 @@
|
||||
/// Credit Breyer
|
||||
/// Sourced from - http://forum.unity3d.com/threads/scripts-useful-4-6-scripts-collection.264161/#post-1777407
|
||||
|
||||
namespace UnityEngine.UI.Extensions
|
||||
{
|
||||
[RequireComponent(typeof(Text), typeof(RectTransform))]
|
||||
[AddComponentMenu("UI/Effects/Extensions/Curved Text")]
|
||||
public class CurvedText : BaseMeshEffect
|
||||
{
|
||||
[SerializeField]
|
||||
private AnimationCurve _curveForText = AnimationCurve.Linear(0, 0, 1, 10);
|
||||
|
||||
public AnimationCurve CurveForText
|
||||
{
|
||||
get { return _curveForText; }
|
||||
set { _curveForText = value; graphic.SetVerticesDirty(); }
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
private float _curveMultiplier = 1;
|
||||
|
||||
public float CurveMultiplier
|
||||
{
|
||||
get { return _curveMultiplier; }
|
||||
set { _curveMultiplier = value; graphic.SetVerticesDirty(); }
|
||||
}
|
||||
|
||||
private RectTransform rectTrans;
|
||||
|
||||
|
||||
#if UNITY_EDITOR
|
||||
protected override void OnValidate()
|
||||
{
|
||||
base.OnValidate();
|
||||
if (_curveForText[0].time != 0)
|
||||
{
|
||||
var tmpRect = _curveForText[0];
|
||||
tmpRect.time = 0;
|
||||
_curveForText.MoveKey(0, tmpRect);
|
||||
}
|
||||
if (rectTrans == null)
|
||||
rectTrans = GetComponent<RectTransform>();
|
||||
if (_curveForText[_curveForText.length - 1].time != rectTrans.rect.width)
|
||||
OnRectTransformDimensionsChange();
|
||||
}
|
||||
#endif
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
rectTrans = GetComponent<RectTransform>();
|
||||
OnRectTransformDimensionsChange();
|
||||
}
|
||||
protected override void OnEnable()
|
||||
{
|
||||
base.OnEnable();
|
||||
rectTrans = GetComponent<RectTransform>();
|
||||
OnRectTransformDimensionsChange();
|
||||
}
|
||||
public override void ModifyMesh(VertexHelper vh)
|
||||
{
|
||||
int count = vh.currentVertCount;
|
||||
if (!IsActive() || count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
for (int index = 0; index < vh.currentVertCount; index++)
|
||||
{
|
||||
UIVertex uiVertex = new UIVertex();
|
||||
vh.PopulateUIVertex(ref uiVertex, index);
|
||||
uiVertex.position.y += _curveForText.Evaluate(rectTrans.rect.width * rectTrans.pivot.x + uiVertex.position.x) * _curveMultiplier;
|
||||
vh.SetUIVertex(uiVertex, index);
|
||||
}
|
||||
}
|
||||
protected override void OnRectTransformDimensionsChange()
|
||||
{
|
||||
if (rectTrans)
|
||||
{
|
||||
Keyframe tmpRect = _curveForText[_curveForText.length - 1];
|
||||
tmpRect.time = rectTrans.rect.width;
|
||||
_curveForText.MoveKey(_curveForText.length - 1, tmpRect);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user