public static void update()
{
if (frameRendered != Time.frameCount)
{ // make sure update is only called once per frame
init();
#if UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5
dtEstimated = Time.realtimeSinceStartup - previousRealTime;
if(dtEstimated>0.2f) // a catch put in, when at the start sometimes this number can grow unrealistically large
dtEstimated = 0.2f;
previousRealTime = Time.realtimeSinceStartup;
#else
dtEstimated = Time.unscaledDeltaTime;
#endif
dtActual = Time.deltaTime;
maxTweenReached = 0;
finishedCnt = 0;
// if(tweenMaxSearch>1500)
// Debug.Log("tweenMaxSearch:"+tweenMaxSearch +" maxTweens:"+maxTweens);
for (int i = 0; i <= tweenMaxSearch && i < maxTweens; i++)
{
//if(i==0 && tweens[i].toggle)
// Debug.Log("tweens["+i+"]"+tweens[i]+" dt:"+dt);
if (tweens[i].toggle)
{
maxTweenReached = i;
tween = tweens[i];
trans = tween.trans;
timeTotal = tween.time;
tweenAction = tween.type;
/*if(trans.gameObject.name=="Main Camera"){
Debug.Log("main tween:"+tween+" i:"+i);
}*/
if (tween.useEstimatedTime)
{
dt = dtEstimated;
}
else if (tween.useFrames)
{
dt = 1;
}
else if (tween.useManualTime)
{
dt = dtManual;
}
else if (tween.direction == 0f)
{
dt = 0f;
}
else
{
dt = dtActual;
}
if (trans == null)
{
removeTween(i);
continue;
}
// Debug.Log("i:"+i+" tween:"+tween+" dt:"+dt);
// Check for tween finished
isTweenFinished = false;
if (tween.delay <= 0)
{
if ((tween.passed + dt > tween.time && tween.direction > 0.0f))
{
// Debug.Log("i:"+i+" passed:"+tween.passed+" dt:"+dt+" time:"+tween.time+" dir:"+tween.direction);
isTweenFinished = true;
tween.passed = tween.time; // Set to the exact end time so that it can finish tween exactly on the end value
}
else if (tween.direction < 0.0f && tween.passed - dt < 0.0f)
{
isTweenFinished = true;
tween.passed = Mathf.Epsilon;
}
}
if (!tween.hasInitiliazed && ((tween.passed == 0.0 && tween.delay == 0.0) || tween.passed > 0.0))
{
tween.init();
}
if (tween.delay <= 0)
{
// Move Values
if (timeTotal <= 0f)
{
//Debug.LogError("time total is zero Time.timeScale:"+Time.timeScale+" useEstimatedTime:"+tween.useEstimatedTime);
ratioPassed = 1f;
}
else
{
ratioPassed = tween.passed / timeTotal;
}
if (ratioPassed > 1.0f)
{
ratioPassed = 1.0f;
}
else if (ratioPassed < 0f)
{
ratioPassed = 0f;
}
// Debug.Log("action:"+tweenAction+" ratioPassed:"+ratioPassed + " timeTotal:" + timeTotal + " tween.passed:"+ tween.passed +" dt:"+dt);
if (tweenAction >= TweenAction.MOVE_X && tweenAction < TweenAction.MOVE)
{
if (tween.animationCurve != null)
{
val = tweenOnCurve(tween, ratioPassed);
}
else
{
switch (tween.tweenType)
{
case LeanTweenType.linear:
val = tween.from.x + tween.diff.x * ratioPassed; break;
case LeanTweenType.easeOutQuad:
val = easeOutQuadOpt(tween.from.x, tween.diff.x, ratioPassed); break;
case LeanTweenType.easeInQuad:
val = easeInQuadOpt(tween.from.x, tween.diff.x, ratioPassed); break;
case LeanTweenType.easeInOutQuad:
val = easeInOutQuadOpt(tween.from.x, tween.diff.x, ratioPassed); break;
case LeanTweenType.easeInCubic:
val = easeInCubic(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeOutCubic:
val = easeOutCubic(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeInOutCubic:
val = easeInOutCubic(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeInQuart:
val = easeInQuart(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeOutQuart:
val = easeOutQuart(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeInOutQuart:
val = easeInOutQuart(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeInQuint:
val = easeInQuint(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeOutQuint:
val = easeOutQuint(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeInOutQuint:
val = easeInOutQuint(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeInSine:
val = easeInSine(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeOutSine:
val = easeOutSine(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeInOutSine:
val = easeInOutSine(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeInExpo:
val = easeInExpo(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeOutExpo:
val = easeOutExpo(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeInOutExpo:
val = easeInOutExpo(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeInCirc:
val = easeInCirc(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeOutCirc:
val = easeOutCirc(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeInOutCirc:
val = easeInOutCirc(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeInBounce:
val = easeInBounce(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeOutBounce:
val = easeOutBounce(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeInOutBounce:
val = easeInOutBounce(tween.from.x, tween.to.x, ratioPassed); break;
case LeanTweenType.easeInBack:
val = easeInBack(tween.from.x, tween.to.x, ratioPassed, tween.overshoot); break;
case LeanTweenType.easeOutBack:
val = easeOutBack(tween.from.x, tween.to.x, ratioPassed, tween.overshoot); break;
case LeanTweenType.easeInOutBack:
val = easeInOutBack(tween.from.x, tween.to.x, ratioPassed, tween.overshoot); break;
case LeanTweenType.easeInElastic:
val = easeInElastic(tween.from.x, tween.to.x, ratioPassed, tween.overshoot, tween.period); break;
case LeanTweenType.easeOutElastic:
val = easeOutElastic(tween.from.x, tween.to.x, ratioPassed, tween.overshoot, tween.period); break;
case LeanTweenType.easeInOutElastic:
val = easeInOutElastic(tween.from.x, tween.to.x, ratioPassed, tween.overshoot, tween.period); break;
case LeanTweenType.punch:
case LeanTweenType.easeShake:
if (tween.tweenType == LeanTweenType.punch)
{
tween.animationCurve = LeanTween.punch;
}
else if (tween.tweenType == LeanTweenType.easeShake)
{
tween.animationCurve = LeanTween.shake;
}
tween.to.x = tween.from.x + tween.to.x;
tween.diff.x = tween.to.x - tween.from.x;
val = tweenOnCurve(tween, ratioPassed); break;
case LeanTweenType.easeSpring:
val = spring(tween.from.x, tween.to.x, ratioPassed); break;
default:
{
val = tween.from.x + tween.diff.x * ratioPassed; break;
}
}
}
// Debug.Log("from:"+from+" val:"+val+" ratioPassed:"+ratioPassed);
if (tweenAction == TweenAction.MOVE_X)
{
trans.position = new Vector3(val, trans.position.y, trans.position.z);
}
else if (tweenAction == TweenAction.MOVE_Y)
{
trans.position = new Vector3(trans.position.x, val, trans.position.z);
}
else if (tweenAction == TweenAction.MOVE_Z)
{
trans.position = new Vector3(trans.position.x, trans.position.y, val);
}
if (tweenAction == TweenAction.MOVE_LOCAL_X)
{
trans.localPosition = new Vector3(val, trans.localPosition.y, trans.localPosition.z);
}
else if (tweenAction == TweenAction.MOVE_LOCAL_Y)
{
trans.localPosition = new Vector3(trans.localPosition.x, val, trans.localPosition.z);
}
else if (tweenAction == TweenAction.MOVE_LOCAL_Z)
{
trans.localPosition = new Vector3(trans.localPosition.x, trans.localPosition.y, val);
}
else if (tweenAction == TweenAction.MOVE_CURVED)
{
if (tween.path.orientToPath)
{
if (tween.path.orientToPath2d)
{
tween.path.place2d(trans, val);
}
else
{
tween.path.place(trans, val);
}
}
else
{
trans.position = tween.path.point(val);
}
// Debug.Log("val:"+val+" trans.position:"+trans.position + " 0:"+ tween.curves[0] +" 1:"+tween.curves[1] +" 2:"+tween.curves[2] +" 3:"+tween.curves[3]);
}
else if ((TweenAction)tweenAction == TweenAction.MOVE_CURVED_LOCAL)
{
if (tween.path.orientToPath)
{
if (tween.path.orientToPath2d)
{
tween.path.placeLocal2d(trans, val);
}
else
{
tween.path.placeLocal(trans, val);
}
}
else
{
trans.localPosition = tween.path.point(val);
}
// Debug.Log("val:"+val+" trans.position:"+trans.position);
}
else if (tweenAction == TweenAction.MOVE_SPLINE)
{
if (tween.spline.orientToPath)
{
if (tween.spline.orientToPath2d)
{
tween.spline.place2d(trans, val);
}
else
{
tween.spline.place(trans, val);
}
}
else
{
trans.position = tween.spline.point(val);
}
}
else if (tweenAction == TweenAction.MOVE_SPLINE_LOCAL)
{
if (tween.spline.orientToPath)
{
if (tween.spline.orientToPath2d)
{
tween.spline.placeLocal2d(trans, val);
}
else
{
tween.spline.placeLocal(trans, val);
}
}
else
{
trans.localPosition = tween.spline.point(val);
}
}
else if (tweenAction == TweenAction.SCALE_X)
{
trans.localScale = new Vector3(val, trans.localScale.y, trans.localScale.z);
}
else if (tweenAction == TweenAction.SCALE_Y)
{
trans.localScale = new Vector3(trans.localScale.x, val, trans.localScale.z);
}
else if (tweenAction == TweenAction.SCALE_Z)
{
trans.localScale = new Vector3(trans.localScale.x, trans.localScale.y, val);
}
else if (tweenAction == TweenAction.ROTATE_X)
{
trans.eulerAngles = new Vector3(val, trans.eulerAngles.y, trans.eulerAngles.z);
}
else if (tweenAction == TweenAction.ROTATE_Y)
{
trans.eulerAngles = new Vector3(trans.eulerAngles.x, val, trans.eulerAngles.z);
}
else if (tweenAction == TweenAction.ROTATE_Z)
{
trans.eulerAngles = new Vector3(trans.eulerAngles.x, trans.eulerAngles.y, val);
}
else if (tweenAction == TweenAction.ROTATE_AROUND)
{
Vector3 origPos = trans.localPosition;
Vector3 rotateAroundPt = (Vector3)trans.TransformPoint(tween.point);
trans.RotateAround(rotateAroundPt, tween.axis, -val);
Vector3 diff = origPos - trans.localPosition;
trans.localPosition = origPos - diff; // Subtract the amount the object has been shifted over by the rotate, to get it back to it's orginal position
trans.rotation = tween.origRotation;
rotateAroundPt = (Vector3)trans.TransformPoint(tween.point);
trans.RotateAround(rotateAroundPt, tween.axis, val);
//GameObject cubeMarker = GameObject.Find("TweenRotatePoint");
//cubeMarker.transform.position = rotateAroundPt;
}
else if (tweenAction == TweenAction.ROTATE_AROUND_LOCAL)
{
Vector3 origPos = trans.localPosition;
trans.RotateAround((Vector3)trans.TransformPoint(tween.point), trans.TransformDirection(tween.axis), -val);
Vector3 diff = origPos - trans.localPosition;
trans.localPosition = origPos - diff; // Subtract the amount the object has been shifted over by the rotate, to get it back to it's orginal position
trans.localRotation = tween.origRotation;
Vector3 rotateAroundPt = (Vector3)trans.TransformPoint(tween.point);
trans.RotateAround(rotateAroundPt, trans.TransformDirection(tween.axis), val);
//GameObject cubeMarker = GameObject.Find("TweenRotatePoint");
//cubeMarker.transform.position = rotateAroundPt;
}
else if (tweenAction == TweenAction.ALPHA)
{
#if UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2
if(trans.gameObject.renderer){
foreach(Material mat in trans.gameObject.renderer.materials){
mat.color = new Color( mat.color.r, mat.color.g, mat.color.b, val);
}
}
if(trans.childCount>0){
foreach (Transform child in trans) {
if(child.gameObject.renderer!=null){
foreach(Material mat in child.gameObject.renderer.materials){
mat.color = new Color( mat.color.r, mat.color.g, mat.color.b, val);
}
}
}
}
#else
SpriteRenderer ren = trans.gameObject.GetComponent<SpriteRenderer>();
if (ren != null)
{
ren.color = new Color(ren.color.r, ren.color.g, ren.color.b, val);
}
else
{
if (trans.gameObject.GetComponent<Renderer>() != null)
{
foreach (Material mat in trans.gameObject.GetComponent<Renderer>().materials)
{
if (mat.HasProperty("_Color"))
{
mat.color = new Color(mat.color.r, mat.color.g, mat.color.b, val);
}
else if (mat.HasProperty("_TintColor"))
{
Color col = mat.GetColor("_TintColor");
mat.SetColor("_TintColor", new Color(col.r, col.g, col.b, val));
}
}
}
if (trans.childCount > 0)
{
foreach (Transform child in trans)
{
if (child.gameObject.GetComponent<Renderer>() != null)
{
foreach (Material mat in child.gameObject.GetComponent<Renderer>().materials)
{
mat.color = new Color(mat.color.r, mat.color.g, mat.color.b, val);
}
}
}
}
}
#endif
}
else if (tweenAction == TweenAction.ALPHA_VERTEX)
{
Mesh mesh = trans.GetComponent<MeshFilter>().mesh;
Vector3[] vertices = mesh.vertices;
Color32[] colors = new Color32[vertices.Length];
Color32 c = mesh.colors32[0];
c = new Color(c.r, c.g, c.b, val);
for (int k = 0; k < vertices.Length; k++)
{
colors[k] = c;
}
mesh.colors32 = colors;
}
else if (tweenAction == TweenAction.COLOR || tweenAction == TweenAction.CALLBACK_COLOR)
{
Color toColor = tweenColor(tween, val);
#if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2
SpriteRenderer ren = trans.gameObject.GetComponent<SpriteRenderer>();
if (ren != null)
{
ren.color = toColor;
}
else
{
#endif
// Debug.Log("val:"+val+" tween:"+tween+" tween.diff:"+tween.diff);
if (tweenAction == TweenAction.COLOR)
{
if (trans.gameObject.GetComponent<Renderer>() != null)
{
foreach (Material mat in trans.gameObject.GetComponent<Renderer>().materials)
{
mat.color = toColor;
}
}
if (trans.childCount > 0)
{
foreach (Transform child in trans)
{
if (child.gameObject.GetComponent<Renderer>() != null)
{
foreach (Material mat in child.gameObject.GetComponent<Renderer>().materials)
{
mat.color = toColor;
}
}
}
}
}
#if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2
}
#endif
if (dt != 0f && tween.onUpdateColor != null)
{
tween.onUpdateColor(toColor);
}
}
#if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 && !UNITY_4_5
else if (tweenAction == TweenAction.CANVAS_ALPHA)
{
Color c = tween.uiImage.color;
c.a = val;
tween.uiImage.color = c;
}
else if (tweenAction == TweenAction.CANVAS_COLOR)
{
Color toColor = tweenColor(tween, val);
tween.uiImage.color = toColor;
if (dt != 0f && tween.onUpdateColor != null)
{
tween.onUpdateColor(toColor);
}
}
else if (tweenAction == TweenAction.TEXT_ALPHA)
{
textAlphaRecursive(trans, val);
}
else if (tweenAction == TweenAction.TEXT_COLOR)
{
Color toColor = tweenColor(tween, val);
tween.uiText.color = toColor;
if (dt != 0f && tween.onUpdateColor != null)
{
tween.onUpdateColor(toColor);
}
if (trans.childCount > 0)
{
foreach (Transform child in trans)
{
UnityEngine.UI.Text uiText = child.gameObject.GetComponent<UnityEngine.UI.Text>();
if (uiText != null)
{
uiText.color = toColor;
}
}
}
}
else if (tweenAction == TweenAction.CANVAS_ROTATEAROUND)
{
// figure out how much the rotation has shifted the object over
RectTransform rect = tween.rectTransform;
Vector3 origPos = rect.localPosition;
rect.RotateAround((Vector3)rect.TransformPoint(tween.point), tween.axis, -val);
Vector3 diff = origPos - rect.localPosition;
rect.localPosition = origPos - diff; // Subtract the amount the object has been shifted over by the rotate, to get it back to it's orginal position
rect.rotation = tween.origRotation;
rect.RotateAround((Vector3)rect.TransformPoint(tween.point), tween.axis, val);
}
else if (tweenAction == TweenAction.CANVAS_ROTATEAROUND_LOCAL)
{
// figure out how much the rotation has shifted the object over
RectTransform rect = tween.rectTransform;
Vector3 origPos = rect.localPosition;
rect.RotateAround((Vector3)rect.TransformPoint(tween.point), rect.TransformDirection(tween.axis), -val);
Vector3 diff = origPos - rect.localPosition;
rect.localPosition = origPos - diff; // Subtract the amount the object has been shifted over by the rotate, to get it back to it's orginal position
rect.rotation = tween.origRotation;
rect.RotateAround((Vector3)rect.TransformPoint(tween.point), rect.TransformDirection(tween.axis), val);
}
else if (tweenAction == TweenAction.CANVAS_PLAYSPRITE)
{
int frame = (int)Mathf.Round(val);
// Debug.Log("frame:"+frame+" val:"+val);
tween.uiImage.sprite = tween.sprites[frame];
}
else if (tweenAction == TweenAction.CANVAS_MOVE_X)
{
Vector3 current = tween.rectTransform.anchoredPosition3D;
tween.rectTransform.anchoredPosition3D = new Vector3(val, current.y, current.z);
}
else if (tweenAction == TweenAction.CANVAS_MOVE_Y)
{
Vector3 current = tween.rectTransform.anchoredPosition3D;
tween.rectTransform.anchoredPosition3D = new Vector3(current.x, val, current.z);
}
else if (tweenAction == TweenAction.CANVAS_MOVE_Z)
{
Vector3 current = tween.rectTransform.anchoredPosition3D;
tween.rectTransform.anchoredPosition3D = new Vector3(current.x, current.y, val);
}
#endif
}
else if (tweenAction >= TweenAction.MOVE)
{
//
if (tween.animationCurve != null)
{
newVect = tweenOnCurveVector(tween, ratioPassed);
}
else
{
if (tween.tweenType == LeanTweenType.linear)
{
newVect = new Vector3(tween.from.x + tween.diff.x * ratioPassed, tween.from.y + tween.diff.y * ratioPassed, tween.from.z + tween.diff.z * ratioPassed);
}
else if (tween.tweenType >= LeanTweenType.linear)
{
switch (tween.tweenType)
{
case LeanTweenType.easeOutQuad:
newVect = new Vector3(easeOutQuadOpt(tween.from.x, tween.diff.x, ratioPassed), easeOutQuadOpt(tween.from.y, tween.diff.y, ratioPassed), easeOutQuadOpt(tween.from.z, tween.diff.z, ratioPassed)); break;
case LeanTweenType.easeInQuad:
newVect = new Vector3(easeInQuadOpt(tween.from.x, tween.diff.x, ratioPassed), easeInQuadOpt(tween.from.y, tween.diff.y, ratioPassed), easeInQuadOpt(tween.from.z, tween.diff.z, ratioPassed)); break;
case LeanTweenType.easeInOutQuad:
newVect = new Vector3(easeInOutQuadOpt(tween.from.x, tween.diff.x, ratioPassed), easeInOutQuadOpt(tween.from.y, tween.diff.y, ratioPassed), easeInOutQuadOpt(tween.from.z, tween.diff.z, ratioPassed)); break;
case LeanTweenType.easeInCubic:
newVect = new Vector3(easeInCubic(tween.from.x, tween.to.x, ratioPassed), easeInCubic(tween.from.y, tween.to.y, ratioPassed), easeInCubic(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeOutCubic:
newVect = new Vector3(easeOutCubic(tween.from.x, tween.to.x, ratioPassed), easeOutCubic(tween.from.y, tween.to.y, ratioPassed), easeOutCubic(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeInOutCubic:
newVect = new Vector3(easeInOutCubic(tween.from.x, tween.to.x, ratioPassed), easeInOutCubic(tween.from.y, tween.to.y, ratioPassed), easeInOutCubic(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeInQuart:
newVect = new Vector3(easeInQuart(tween.from.x, tween.to.x, ratioPassed), easeInQuart(tween.from.y, tween.to.y, ratioPassed), easeInQuart(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeOutQuart:
newVect = new Vector3(easeOutQuart(tween.from.x, tween.to.x, ratioPassed), easeOutQuart(tween.from.y, tween.to.y, ratioPassed), easeOutQuart(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeInOutQuart:
newVect = new Vector3(easeInOutQuart(tween.from.x, tween.to.x, ratioPassed), easeInOutQuart(tween.from.y, tween.to.y, ratioPassed), easeInOutQuart(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeInQuint:
newVect = new Vector3(easeInQuint(tween.from.x, tween.to.x, ratioPassed), easeInQuint(tween.from.y, tween.to.y, ratioPassed), easeInQuint(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeOutQuint:
newVect = new Vector3(easeOutQuint(tween.from.x, tween.to.x, ratioPassed), easeOutQuint(tween.from.y, tween.to.y, ratioPassed), easeOutQuint(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeInOutQuint:
newVect = new Vector3(easeInOutQuint(tween.from.x, tween.to.x, ratioPassed), easeInOutQuint(tween.from.y, tween.to.y, ratioPassed), easeInOutQuint(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeInSine:
newVect = new Vector3(easeInSine(tween.from.x, tween.to.x, ratioPassed), easeInSine(tween.from.y, tween.to.y, ratioPassed), easeInSine(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeOutSine:
newVect = new Vector3(easeOutSine(tween.from.x, tween.to.x, ratioPassed), easeOutSine(tween.from.y, tween.to.y, ratioPassed), easeOutSine(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeInOutSine:
newVect = new Vector3(easeInOutSine(tween.from.x, tween.to.x, ratioPassed), easeInOutSine(tween.from.y, tween.to.y, ratioPassed), easeInOutSine(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeInExpo:
newVect = new Vector3(easeInExpo(tween.from.x, tween.to.x, ratioPassed), easeInExpo(tween.from.y, tween.to.y, ratioPassed), easeInExpo(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeOutExpo:
newVect = new Vector3(easeOutExpo(tween.from.x, tween.to.x, ratioPassed), easeOutExpo(tween.from.y, tween.to.y, ratioPassed), easeOutExpo(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeInOutExpo:
newVect = new Vector3(easeInOutExpo(tween.from.x, tween.to.x, ratioPassed), easeInOutExpo(tween.from.y, tween.to.y, ratioPassed), easeInOutExpo(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeInCirc:
newVect = new Vector3(easeInCirc(tween.from.x, tween.to.x, ratioPassed), easeInCirc(tween.from.y, tween.to.y, ratioPassed), easeInCirc(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeOutCirc:
newVect = new Vector3(easeOutCirc(tween.from.x, tween.to.x, ratioPassed), easeOutCirc(tween.from.y, tween.to.y, ratioPassed), easeOutCirc(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeInOutCirc:
newVect = new Vector3(easeInOutCirc(tween.from.x, tween.to.x, ratioPassed), easeInOutCirc(tween.from.y, tween.to.y, ratioPassed), easeInOutCirc(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeInBounce:
newVect = new Vector3(easeInBounce(tween.from.x, tween.to.x, ratioPassed), easeInBounce(tween.from.y, tween.to.y, ratioPassed), easeInBounce(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeOutBounce:
newVect = new Vector3(easeOutBounce(tween.from.x, tween.to.x, ratioPassed), easeOutBounce(tween.from.y, tween.to.y, ratioPassed), easeOutBounce(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeInOutBounce:
newVect = new Vector3(easeInOutBounce(tween.from.x, tween.to.x, ratioPassed), easeInOutBounce(tween.from.y, tween.to.y, ratioPassed), easeInOutBounce(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeInBack:
newVect = new Vector3(easeInBack(tween.from.x, tween.to.x, ratioPassed), easeInBack(tween.from.y, tween.to.y, ratioPassed), easeInBack(tween.from.z, tween.to.z, ratioPassed)); break;
case LeanTweenType.easeOutBack:
newVect = new Vector3(easeOutBack(tween.from.x, tween.to.x, ratioPassed, tween.overshoot), easeOutBack(tween.from.y, tween.to.y, ratioPassed, tween.overshoot), easeOutBack(tween.from.z, tween.to.z, ratioPassed, tween.overshoot)); break;
case LeanTweenType.easeInOutBack:
newVect = new Vector3(easeInOutBack(tween.from.x, tween.to.x, ratioPassed, tween.overshoot), easeInOutBack(tween.from.y, tween.to.y, ratioPassed, tween.overshoot), easeInOutBack(tween.from.z, tween.to.z, ratioPassed, tween.overshoot)); break;
case LeanTweenType.easeInElastic:
newVect = new Vector3(easeInElastic(tween.from.x, tween.to.x, ratioPassed, tween.overshoot, tween.period), easeInElastic(tween.from.y, tween.to.y, ratioPassed, tween.overshoot, tween.period), easeInElastic(tween.from.z, tween.to.z, ratioPassed, tween.overshoot, tween.period)); break;
case LeanTweenType.easeOutElastic:
newVect = new Vector3(easeOutElastic(tween.from.x, tween.to.x, ratioPassed, tween.overshoot, tween.period), easeOutElastic(tween.from.y, tween.to.y, ratioPassed, tween.overshoot, tween.period), easeOutElastic(tween.from.z, tween.to.z, ratioPassed, tween.overshoot, tween.period)); break;
case LeanTweenType.easeInOutElastic:
newVect = new Vector3(easeInOutElastic(tween.from.x, tween.to.x, ratioPassed, tween.overshoot, tween.period), easeInOutElastic(tween.from.y, tween.to.y, ratioPassed, tween.overshoot, tween.period), easeInOutElastic(tween.from.z, tween.to.z, ratioPassed, tween.overshoot, tween.period)); break;
case LeanTweenType.punch:
case LeanTweenType.easeShake:
if (tween.tweenType == LeanTweenType.punch)
{
tween.animationCurve = LeanTween.punch;
}
else if (tween.tweenType == LeanTweenType.easeShake)
{
tween.animationCurve = LeanTween.shake;
}
tween.to = tween.from + tween.to;
tween.diff = tween.to - tween.from;
if (tweenAction == TweenAction.ROTATE || tweenAction == TweenAction.ROTATE_LOCAL)
{
tween.to = new Vector3(closestRot(tween.from.x, tween.to.x), closestRot(tween.from.y, tween.to.y), closestRot(tween.from.z, tween.to.z));
}
newVect = tweenOnCurveVector(tween, ratioPassed); break;
case LeanTweenType.easeSpring:
newVect = new Vector3(spring(tween.from.x, tween.to.x, ratioPassed), spring(tween.from.y, tween.to.y, ratioPassed), spring(tween.from.z, tween.to.z, ratioPassed)); break;
}
}
else
{
newVect = new Vector3(tween.from.x + tween.diff.x * ratioPassed, tween.from.y + tween.diff.y * ratioPassed, tween.from.z + tween.diff.z * ratioPassed);
}
}
if (tweenAction == TweenAction.MOVE)
{
trans.position = newVect;
}
else if (tweenAction == TweenAction.MOVE_LOCAL)
{
trans.localPosition = newVect;
}
else if (tweenAction == TweenAction.ROTATE)
{
/*if(tween.hasPhysics){
trans.gameObject.rigidbody.MoveRotation(Quaternion.Euler( newVect ));
}else{*/
trans.eulerAngles = newVect;
// }
}
else if (tweenAction == TweenAction.ROTATE_LOCAL)
{
trans.localEulerAngles = newVect;
}
else if (tweenAction == TweenAction.SCALE)
{
trans.localScale = newVect;
}
else if (tweenAction == TweenAction.GUI_MOVE)
{
tween.ltRect.rect = new Rect(newVect.x, newVect.y, tween.ltRect.rect.width, tween.ltRect.rect.height);
}
else if (tweenAction == TweenAction.GUI_MOVE_MARGIN)
{
tween.ltRect.margin = new Vector2(newVect.x, newVect.y);
}
else if (tweenAction == TweenAction.GUI_SCALE)
{
tween.ltRect.rect = new Rect(tween.ltRect.rect.x, tween.ltRect.rect.y, newVect.x, newVect.y);
}
else if (tweenAction == TweenAction.GUI_ALPHA)
{
tween.ltRect.alpha = newVect.x;
}
else if (tweenAction == TweenAction.GUI_ROTATE)
{
tween.ltRect.rotation = newVect.x;
}
#if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 && !UNITY_4_5
else if (tweenAction == TweenAction.CANVAS_MOVE)
{
tween.rectTransform.anchoredPosition3D = newVect;
}
else if (tweenAction == TweenAction.CANVAS_SCALE)
{
tween.rectTransform.localScale = newVect;
}
#endif
}
// Debug.Log("tween.delay:"+tween.delay + " tween.passed:"+tween.passed + " tweenAction:"+tweenAction + " to:"+newVect+" axis:"+tween.axis);
if (dt != 0f && tween.hasUpdateCallback)
{
if (tween.onUpdateFloat != null)
{
tween.onUpdateFloat(val);
}
if (tween.onUpdateFloatRatio != null)
{
tween.onUpdateFloatRatio(val, ratioPassed);
}
else if (tween.onUpdateFloatObject != null)
{
tween.onUpdateFloatObject(val, tween.onUpdateParam);
}
else if (tween.onUpdateVector3Object != null)
{
tween.onUpdateVector3Object(newVect, tween.onUpdateParam);
}
else if (tween.onUpdateVector3 != null)
{
tween.onUpdateVector3(newVect);
}
else if (tween.onUpdateVector2 != null)
{
tween.onUpdateVector2(new Vector2(newVect.x, newVect.y));
}
}
#if LEANTWEEN_1
else if(tween.optional!=null){ // LeanTween 1.x legacy stuff
var onUpdate = tween.optional["onUpdate"];
if(onUpdate!=null){
Hashtable updateParam = (Hashtable)tween.optional["onUpdateParam"];
if((TweenAction)tweenAction==TweenAction.VALUE3){
if(onUpdate.GetType() == typeof(string)){
string onUpdateS = onUpdate as string;
customTarget = tween.optional["onUpdateTarget"]!=null ? tween.optional["onUpdateTarget"] as GameObject : trans.gameObject;
customTarget.BroadcastMessage( onUpdateS, newVect );
}else if(onUpdate.GetType() == typeof(System.Action<Vector3, Hashtable>)){
System.Action<Vector3, Hashtable> onUpdateA = (System.Action<Vector3, Hashtable>)onUpdate;
onUpdateA(newVect, updateParam);
}else{
System.Action<Vector3> onUpdateA = (System.Action<Vector3>)onUpdate;
onUpdateA(newVect);
}
}else{
if(onUpdate.GetType() == typeof(string)){
string onUpdateS = onUpdate as string;
if (tween.optional["onUpdateTarget"]!=null){
customTarget = tween.optional["onUpdateTarget"] as GameObject;
customTarget.BroadcastMessage( onUpdateS, val );
}else{
trans.gameObject.BroadcastMessage( onUpdateS, val );
}
}else if(onUpdate.GetType() == typeof(System.Action<float, Hashtable>)){
System.Action<float, Hashtable> onUpdateA = (System.Action<float, Hashtable>)onUpdate;
onUpdateA(val, updateParam);
}else if(onUpdate.GetType() == typeof(System.Action<Vector3>)){
System.Action<Vector3> onUpdateA = (System.Action<Vector3>)onUpdate;
onUpdateA( newVect );
}else{
System.Action<float> onUpdateA = (System.Action<float>)onUpdate;
onUpdateA(val);
}
}
}
}
#endif
}
if (isTweenFinished)
{
if (tween.loopType == LeanTweenType.once || tween.loopCount == 1)
{
tweensFinished[finishedCnt] = i;
finishedCnt++;
//Debug.Log("finished tween:"+i+" tween:"+tween);
if (tweenAction == TweenAction.GUI_ROTATE)
tween.ltRect.rotateFinished = true;
if (tweenAction == TweenAction.DELAYED_SOUND)
{
AudioSource.PlayClipAtPoint((AudioClip)tween.onCompleteParam, tween.to, tween.from.x);
}
}
else
{
if ((tween.loopCount < 0 && tween.type == TweenAction.CALLBACK) || tween.onCompleteOnRepeat)
{
if (tweenAction == TweenAction.DELAYED_SOUND)
{
AudioSource.PlayClipAtPoint((AudioClip)tween.onCompleteParam, tween.to, tween.from.x);
}
if (tween.onComplete != null)
{
tween.onComplete();
}
else if (tween.onCompleteObject != null)
{
tween.onCompleteObject(tween.onCompleteParam);
}
}
if (tween.loopCount >= 1)
{
tween.loopCount--;
}
// Debug.Log("tween.loopType:"+tween.loopType+" tween.loopCount:"+tween.loopCount+" passed:"+tween.passed);
if (tween.loopType == LeanTweenType.pingPong)
{
tween.direction = 0.0f - (tween.direction);
}
else
{
tween.passed = Mathf.Epsilon;
}
}
}
else if (tween.delay <= 0f)
{
tween.passed += dt * tween.direction;
}
else
{
tween.delay -= dt;
// Debug.Log("dt:"+dt+" tween:"+i+" tween:"+tween);
if (tween.delay < 0f)
{
tween.passed = 0.0f;//-tween.delay
tween.delay = 0.0f;
}
}
}
}
// Debug.Log("maxTweenReached:"+maxTweenReached);
tweenMaxSearch = maxTweenReached;
frameRendered = Time.frameCount;
for (int i = 0; i < finishedCnt; i++)
{
j = tweensFinished[i];
tween = tweens[j];
// logError("removing tween:"+tween);
if (tween.onComplete != null)
{
System.Action onComplete = tween.onComplete;
//logError("removing tween for j:"+j+" tween:"+tween);
removeTween(j);
//tween.cleanup();
onComplete();
}
else if (tween.onCompleteObject != null)
{
System.Action<object> onCompleteObject = tween.onCompleteObject;
object onCompleteParam = tween.onCompleteParam;
removeTween(j);
//tween.cleanup();
onCompleteObject(onCompleteParam);
}
#if LEANTWEEN_1
else if(tween.optional!=null){
System.Action callback=null;
System.Action<object> callbackWithParam = null;
string callbackS=string.Empty;
object callbackParam=null;
Hashtable optional = tween.optional;
if(tween.optional!=null && tween.trans){
if(tween.optional["onComplete"]!=null){
callbackParam = tween.optional["onCompleteParam"];
if(tween.optional["onComplete"].GetType()==typeof(string)){
callbackS = tween.optional["onComplete"] as string;
}else{
if(callbackParam!=null){
callbackWithParam = (System.Action<object>)tween.optional["onComplete"];
}else{
callback = (System.Action)tween.optional["onComplete"];
if(callback==null)
Debug.LogWarning("callback was not converted");
}
}
}
}
removeTween(j);
if(callbackWithParam!=null){
callbackWithParam( callbackParam );
}else if(callback!=null){
callback();
}else if(callbackS!=string.Empty){
if (optional["onCompleteTarget"]!=null){
customTarget = optional["onCompleteTarget"] as GameObject;
if(callbackParam!=null) customTarget.BroadcastMessage ( callbackS, callbackParam );
else customTarget.BroadcastMessage( callbackS );
}else{
if(callbackParam!=null) trans.gameObject.BroadcastMessage ( callbackS, callbackParam );
else trans.gameObject.BroadcastMessage( callbackS );
}
}
}
#endif
else
{
removeTween(j);
//tween.cleanup();
}
}
}
}