//private bool         m_RotateAroundVector;

   public void In(
      [FriendlyName("Target", "The Target GameObject(s) whose look direction will be adjusted."), AutoLinkType(typeof(GameObject))]
      GameObject[] Target,
      
      [FriendlyName("Focus", "The item to focus on - can be a Vector3 position or a GameObject.")]
      object Focus,

      [FriendlyName("Seconds", "The amount of time (in seconds) it takes to complete the look.  Use 0 for an instantaneous look.")]
      float time,

      [FriendlyName("Lock Axis", "Use this to lock rotation on the specified axis.")]
	  [SocketState(false, false)]
      LockAxis lockAxis
      )
   {
      if (Focus != null)
      {
         m_Time      = 0.0f;
         m_TotalTime = time;
         m_Targets   = null;
         m_Focus     = null;
         m_LockAxis = lockAxis;
         //m_RotateAroundVector = rotateAroundVector;
         
#if !UNITY_FLASH
         if (typeof(GameObject) == Focus.GetType())
         {
            m_Focus = (GameObject) Focus;
            m_FocusPosition = ((GameObject)Focus).transform.position;
         }
         else if (typeof(Vector3) == Focus.GetType())
         {
            m_FocusPosition = (Vector3)Focus;
         }
         else
         {
#endif
            m_FocusPosition = Vector3.forward;
#if !UNITY_FLASH
         }
#endif


         m_Targets = Target;

         m_StartRotations = new Quaternion[ m_Targets.Length ];
         m_StartPositions = new Vector3   [ m_Targets.Length ];

         for (int i = 0; i < m_Targets.Length; i++)
         {
            if ( null == m_Targets[i] ) continue;

            m_StartRotations[ i ] = m_Targets[ i ].transform.rotation;
            m_StartPositions[ i ] = m_Targets[ i ].transform.position;
         }
      }

      if (0 == m_TotalTime) Update();
   }
    public void In(
        [FriendlyName("Target", "The Target GameObject(s) whose look direction will be adjusted."), AutoLinkType(typeof(GameObject))]
        GameObject[] Target,

        [FriendlyName("Focus", "The item to focus on - can be a Vector3 position or a GameObject.")]
        object Focus,

        [FriendlyName("Seconds", "The amount of time (in seconds) it takes to complete the look.  Use 0 for an instantaneous look.")]
        float time,

        [FriendlyName("Lock Axis", "Use this to lock rotation on the specified axis.")]
        [SocketState(false, false)]
        LockAxis lockAxis,

        [FriendlyName("Degrees Per Second", "If Use Degrees Per Second is true, this is the speed at which the rotation will take place. NOTE: this variable must have the same sign (i.e. positive or negative) as the Degrees variable.")]
        float DegreesPerSecond = 10.0f,

        [FriendlyName("Use Degrees Per Second", "If this is true, the rotation will happen at a constant rate, no matter how many degrees of rotation are needed.  If false, the rotation will take the number of seconds in the variable Seconds to complete.")]
        [SocketState(true, false)]
        bool UseDegreesPerSecond = false
        )
    {
        if (Focus != null)
        {
            m_Time      = 0.0f;
            m_TotalTime = time;
            m_Targets   = null;
            m_Focus     = null;
            m_LockAxis  = lockAxis;
            //m_RotateAroundVector = rotateAroundVector;

#if !UNITY_FLASH
            if (typeof(GameObject) == Focus.GetType())
            {
                m_Focus         = (GameObject)Focus;
                m_FocusPosition = ((GameObject)Focus).transform.position;
            }
            else if (typeof(Vector3) == Focus.GetType())
            {
                m_FocusPosition = (Vector3)Focus;
            }
            else
            {
#endif
            m_FocusPosition = Vector3.forward;
#if !UNITY_FLASH
        }
#endif


            m_Targets = Target;

            m_StartRotations = new Quaternion[m_Targets.Length];
            m_StartPositions = new Vector3   [m_Targets.Length];

            for (int i = 0; i < m_Targets.Length; i++)
            {
                if (null == m_Targets[i])
                {
                    continue;
                }

                m_StartRotations[i] = m_Targets[i].transform.rotation;
                m_StartPositions[i] = m_Targets[i].transform.position;
            }
        }

        m_UseDegreesPerSecond = UseDegreesPerSecond;
        m_DegreesPerSecond    = DegreesPerSecond;

        if (0 == m_TotalTime)
        {
            Update();
        }
    }
    //private bool         m_RotateAroundVector;

    public void In(
        [FriendlyName("Target", "The Target GameObject(s) whose look direction will be adjusted.")]
        GameObject[] Target,

        [FriendlyName("Focus", "The item to focus on - can be a Vector3 position or a GameObject.")]
        object Focus,

        [FriendlyName("Seconds", "The amount of time (in seconds) it takes to complete the look.  Use 0 for an instantaneous look.")]
        float time,

        [FriendlyName("Lock Axis", "Use this to lock rotation on the specified axis.")]
        [SocketState(false, false)]
        LockAxis lockAxis
        )
    {
        if (Focus != null)
        {
            m_Time      = 0.0f;
            m_TotalTime = time;
            m_Targets   = null;
            m_Focus     = null;
            m_LockAxis  = lockAxis;
            //m_RotateAroundVector = rotateAroundVector;

#if !UNITY_FLASH
            if (typeof(GameObject) == Focus.GetType())
            {
                m_Focus         = (GameObject)Focus;
                m_FocusPosition = ((GameObject)Focus).transform.position;
            }
            else if (typeof(Vector3) == Focus.GetType())
            {
                m_FocusPosition = (Vector3)Focus;
            }
            else
            {
#endif
            m_FocusPosition = Vector3.forward;
#if !UNITY_FLASH
        }
#endif


            m_Targets = Target;

            m_StartRotations = new Quaternion[m_Targets.Length];
            m_StartPositions = new Vector3   [m_Targets.Length];

            for (int i = 0; i < m_Targets.Length; i++)
            {
                if (null == m_Targets[i])
                {
                    continue;
                }

                m_StartRotations[i] = m_Targets[i].transform.rotation;
                m_StartPositions[i] = m_Targets[i].transform.position;
            }
        }

        if (0 == m_TotalTime)
        {
            Update();
        }
    }