Ejemplo n.º 1
0
    void coinFlyToPlayer()
    {
        LTDescrImpl a = LeanTween.moveLocal(gameObject, new Vector3(-640, -360, 0), .5f).setDelay(0.2f) as LTDescrImpl;

        a.setOnComplete(removeCoin);
        a.setOnCompleteParam(12);
    }
Ejemplo n.º 2
0
	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);
		}
	}
Ejemplo n.º 3
0
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) );
}
Ejemplo n.º 4
0
// 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);
}
Ejemplo n.º 5
0
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);
}
Ejemplo n.º 6
0
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();
			}
		}

	}
}
Ejemplo n.º 7
0
/**
* 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();
		}
	}
}
Ejemplo n.º 8
0
/**
* 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
	}
}