| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- //----------------------------------------------
- // NGUI: Next-Gen UI kit
- // Copyright © 2011-2014 Tasharen Entertainment
- //----------------------------------------------
- using UnityEngine;
- /// <summary>
- /// Tween the object's position, rotation and scale.
- /// </summary>
- public class TweenTransform : Tweener
- {
- public Transform from;
- public Transform to;
- public bool parentWhenFinished = false;
- Transform mTrans;
- Vector3 mPos;
- Quaternion mRot;
- Vector3 mScale;
- /// <summary>
- /// Interpolate the position, scale, and rotation.
- /// </summary>
- protected override void OnUpdate (float factor, bool isFinished)
- {
- if (to != null)
- {
- if (mTrans == null)
- {
- mTrans = transform;
- mPos = mTrans.position;
- mRot = mTrans.rotation;
- mScale = mTrans.localScale;
- }
- if (from != null)
- {
- mTrans.position = from.position * (1f - factor) + to.position * factor;
- mTrans.localScale = from.localScale * (1f - factor) + to.localScale * factor;
- mTrans.rotation = Quaternion.Slerp(from.rotation, to.rotation, factor);
- }
- else
- {
- mTrans.position = mPos * (1f - factor) + to.position * factor;
- mTrans.localScale = mScale * (1f - factor) + to.localScale * factor;
- mTrans.rotation = Quaternion.Slerp(mRot, to.rotation, factor);
- }
- // Change the parent when finished, if requested
- if (parentWhenFinished && isFinished) mTrans.parent = to;
- }
- }
- /// <summary>
- /// Start the tweening operation from the current position/rotation/scale to the target transform.
- /// </summary>
- static public TweenTransform Begin (GameObject go, float duration, Transform to) { return Begin(go, duration, null, to); }
- /// <summary>
- /// Start the tweening operation.
- /// </summary>
- static public TweenTransform Begin (GameObject go, float duration, Transform from, Transform to)
- {
- TweenTransform comp = Tweener.Begin<TweenTransform>(go, duration);
- comp.from = from;
- comp.to = to;
- if (duration <= 0f)
- {
- comp.Sample(1f, true);
- comp.enabled = false;
- }
- return comp;
- }
- }
|