using System; using UnityEngine; [AddComponentMenu("NGUI/Tween/Tween Scale")] public class TweenScale : UITweener { public Vector3 from = Vector3.one; public Vector3 to = Vector3.one; public bool updateTable; private Transform mTrans; private UITable mTable; public Transform cachedTransform { get { if (mTrans == null) { mTrans = base.transform; } return mTrans; } } public Vector3 value { get { return cachedTransform.localScale; } set { cachedTransform.localScale = value; } } [Obsolete("Use 'value' instead")] public Vector3 scale { get { return value; } set { this.value = value; } } protected override void OnUpdate(float factor, bool isFinished) { value = from * (1f - factor) + to * factor; if (!updateTable) { return; } if (mTable == null) { mTable = NGUITools.FindInParents(base.gameObject); if (mTable == null) { updateTable = false; return; } } mTable.repositionNow = true; } public static TweenScale Begin(GameObject go, float duration, Vector3 scale) { TweenScale tweenScale = UITweener.Begin(go, duration); tweenScale.from = tweenScale.value; tweenScale.to = scale; if (duration <= 0f) { tweenScale.Sample(1f, isFinished: true); tweenScale.enabled = false; } return tweenScale; } [ContextMenu("Set 'From' to current value")] public override void SetStartToCurrentValue() { from = value; } [ContextMenu("Set 'To' to current value")] public override void SetEndToCurrentValue() { to = value; } [ContextMenu("Assume value of 'From'")] private void SetCurrentValueToStart() { value = from; } [ContextMenu("Assume value of 'To'")] private void SetCurrentValueToEnd() { value = to; } }