void coinFlyToPlayer() { LTDescrImpl a = LeanTween.moveLocal(gameObject, new Vector3(-640, -360, 0), .5f).setDelay(0.2f) as LTDescrImpl; a.setOnComplete(removeCoin); a.setOnCompleteParam(12); }
static int _CreateLTDescrImpl(IntPtr L) { try { int count = LuaDLL.lua_gettop(L); if (count == 0) { LTDescrImpl obj = new LTDescrImpl(); ToLua.PushObject(L, obj); return 1; } else { return LuaDLL.luaL_throw(L, "invalid arguments to ctor method: LTDescrImpl.New"); } } catch(Exception e) { return LuaDLL.toluaL_exception(L, e); } }
private static Vector3 tweenOnCurveVector( LTDescrImpl tweenDescr, float ratioPassed ){ return new Vector3(tweenDescr.from.x + (tweenDescr.diff.x) * tweenDescr.animationCurve.Evaluate(ratioPassed), tweenDescr.from.y + (tweenDescr.diff.y) * tweenDescr.animationCurve.Evaluate(ratioPassed), tweenDescr.from.z + (tweenDescr.diff.z) * tweenDescr.animationCurve.Evaluate(ratioPassed) ); }
// Tweening Functions - Thanks to Robert Penner and GFX47 private static float tweenOnCurve( LTDescrImpl tweenDescr, float ratioPassed ){ // Debug.Log("single ratio:"+ratioPassed+" tweenDescr.animationCurve.Evaluate(ratioPassed):"+tweenDescr.animationCurve.Evaluate(ratioPassed)); return tweenDescr.from.x + (tweenDescr.diff.x) * tweenDescr.animationCurve.Evaluate(ratioPassed); }
private static Color tweenColor( LTDescrImpl tween, float val ){ Vector3 diff3 = tween.point - tween.axis; float diffAlpha = tween.to.y - tween.from.y; return new Color(tween.axis.x + diff3.x*val, tween.axis.y + diff3.y*val, tween.axis.z + diff3.z*val, tween.from.y + diffAlpha*val); }
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 if(dtEstimated<0f){ dtEstimated = 0f; }else{ dtEstimated = Time.unscaledDeltaTime; } // Debug.Log("Time.unscaledDeltaTime:"+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); if (tweenAction == TweenAction.MOVE_TO_TRANSFORM) { tween.to = tween.toTrans.position; tween.diff = tween.to - tween.from; } // 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.toInternal.x = tween.from.x + tween.to.x; tween.diffInternal.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.CANVASGROUP_ALPHA){ CanvasGroup canvasGroup = tween.trans.GetComponent<CanvasGroup>(); canvasGroup.alpha = val; } 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.toInternal = 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.MOVE_TO_TRANSFORM){ trans.position = 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(); } } } }
/** * This line is optional. Here you can specify the maximum number of tweens you will use (the default is 400). This must be called before any use of LeanTween is made for it to be effective. * * @method LeanTween.init * @param {integer} maxSimultaneousTweens:int The maximum number of tweens you will use, make sure you don't go over this limit, otherwise the code will throw an error * @example * LeanTween.init( 800 ); */ public static void init(int maxSimultaneousTweens){ if(tweens==null){ maxTweens = maxSimultaneousTweens; tweens = new LTDescrImpl[maxTweens]; tweensFinished = new int[maxTweens]; _tweenEmpty = new GameObject(); _tweenEmpty.name = "~LeanTween"; _tweenEmpty.AddComponent(typeof(LeanTween)); _tweenEmpty.isStatic = true; #if !UNITY_EDITOR _tweenEmpty.hideFlags = HideFlags.HideAndDontSave; #endif DontDestroyOnLoad( _tweenEmpty ); for(int i = 0; i < maxTweens; i++){ tweens[i] = new LTDescrImpl(); } } }
/** * This line is optional. Here you can specify the maximum number of tweens you will use (the default is 400). This must be called before any use of LeanTween is made for it to be effective. * * @method LeanTween.init * @param {integer} maxSimultaneousTweens:int The maximum number of tweens you will use, make sure you don't go over this limit, otherwise the code will throw an error * @example * LeanTween.init( 800 ); */ public static void init(int maxSimultaneousTweens){ if(tweens==null){ maxTweens = maxSimultaneousTweens; tweens = new LTDescrImpl[maxTweens]; tweensFinished = new int[maxTweens]; _tweenEmpty = new GameObject(); _tweenEmpty.name = "~LeanTween"; _tweenEmpty.AddComponent(typeof(LeanTween)); _tweenEmpty.isStatic = true; #if !UNITY_EDITOR _tweenEmpty.hideFlags = HideFlags.HideAndDontSave; #endif DontDestroyOnLoad( _tweenEmpty ); for(int i = 0; i < maxTweens; i++){ tweens[i] = new LTDescrImpl(); } #if UNITY_5_4_OR_NEWER UnityEngine.SceneManagement.SceneManager.sceneLoaded += onLevelWasLoaded54; #endif } }