//---------------------------------------------- // NGUI: Next-Gen UI kit // Copyright © 2011-2014 Tasharen Entertainment //---------------------------------------------- using UnityEngine; using UnityEngine.UI; /// /// Tween the object's position. /// public class TweenPosition : Tweener { public Vector3 from; public Vector3 to; [HideInInspector] public bool worldSpace = false; Transform mTrans; RectTransform mRectTrans; public Transform cachedTransform { get { if (mTrans == null) mTrans = transform; return mTrans; } } public RectTransform cachedRectTransform { get { if (mRectTrans == null) mRectTrans = GetComponent(); return mRectTrans; } } /// /// Tween's current value. /// public Vector3 value { get { return worldSpace ? cachedTransform.position : cachedTransform.localPosition; } set { if (worldSpace) cachedTransform.position = value; else cachedTransform.localPosition = value; } } /// /// Tween the value. /// protected override void OnUpdate (float factor, bool isFinished) { value = from * (1f - factor) + to * factor; } /// /// Start the tweening operation. /// static public TweenPosition Begin (GameObject go, float duration, Vector3 pos) { TweenPosition comp = Tweener.Begin(go, duration); comp.from = comp.value; comp.to = pos; if (duration <= 0f) { comp.Sample(1f, true); comp.enabled = false; } return comp; } /// /// Start the tweening operation. /// static public TweenPosition Begin (GameObject go, float duration, Vector3 pos, bool worldSpace) { TweenPosition comp = Tweener.Begin(go, duration); comp.worldSpace = worldSpace; comp.from = comp.value; comp.to = pos; if (duration <= 0f) { comp.Sample(1f, true); comp.enabled = false; } return comp; } [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'")] void SetCurrentValueToStart () { value = from; } [ContextMenu("Assume value of 'To'")] void SetCurrentValueToEnd () { value = to; } }