iTween.LookUpdate C# (CSharp) Method

LookUpdate() public static method

Similar to LookTo but incredibly less expensive for usage inside the Update function or similar looping situations involving a "live" set of changing values with FULL customization options. Does not utilize an EaseType.
public static LookUpdate ( GameObject target, Hashtable args ) : void
target GameObject
args Hashtable
return void
    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];
        }
    }

Same methods

iTween::LookUpdate ( GameObject target, Vector3 looktarget, float time ) : void
iTween