public static void LookUpdate(GameObject target, Hashtable args)
{
CleanArgs(args);
float time;
Vector3[] vector3s = new Vector3[5];
//set smooth time:
if(args.Contains("looktime")){
time=(float)args["looktime"];
time*=Defaults.updateTimePercentage;
}else if(args.Contains("time")){
time=(float)args["time"]*.15f;
time*=Defaults.updateTimePercentage;
}else{
time=Defaults.updateTime;
}
//from values:
vector3s[0] = target.transform.eulerAngles;
//set look:
if(args.Contains("looktarget")){
if (args["looktarget"].GetType() == typeof(Transform)) {
//target.transform.LookAt((Transform)args["looktarget"]);
target.transform.LookAt((Transform)args["looktarget"], (Vector3?)args["up"] ?? Defaults.up);
}else if(args["looktarget"].GetType() == typeof(Vector3)){
//target.transform.LookAt((Vector3)args["looktarget"]);
target.transform.LookAt((Vector3)args["looktarget"], (Vector3?)args["up"] ?? Defaults.up);
}
}else{
Debug.LogError("iTween Error: LookUpdate needs a 'looktarget' property!");
return;
}
//to values and reset look:
vector3s[1]=target.transform.eulerAngles;
target.transform.eulerAngles=vector3s[0];
//calculate:
vector3s[3].x=Mathf.SmoothDampAngle(vector3s[0].x,vector3s[1].x,ref vector3s[2].x,time);
vector3s[3].y=Mathf.SmoothDampAngle(vector3s[0].y,vector3s[1].y,ref vector3s[2].y,time);
vector3s[3].z=Mathf.SmoothDampAngle(vector3s[0].z,vector3s[1].z,ref vector3s[2].z,time);
//apply:
target.transform.eulerAngles=vector3s[3];
//axis restriction:
if(args.Contains("axis")){
vector3s[4]=target.transform.eulerAngles;
switch((string)args["axis"]){
case "x":
vector3s[4].y=vector3s[0].y;
vector3s[4].z=vector3s[0].z;
break;
case "y":
vector3s[4].x=vector3s[0].x;
vector3s[4].z=vector3s[0].z;
break;
case "z":
vector3s[4].x=vector3s[0].x;
vector3s[4].y=vector3s[0].y;
break;
}
//apply axis restriction:
target.transform.eulerAngles=vector3s[4];
}
}