private void PerformPatrolling()
    {
        if (!m_bAlreadyReached && Time.time > m_fTimeToWait && IsNextPositionReached(1.0f))
        {
            m_bAlreadyReached = true;
            m_fTimeToWait     = Time.time + m_WaitingTime[m_iCurrentPosition];

            if (m_bRotateOnce)
            {
                m_bRotateAlready = true;
            }

            m_enPatrollingState = STATICPATROLLINGSTATE.PS_WAITING;
        }

        if (!m_bRotateAlready && m_bAlreadyReached && Time.time > m_fTimeToWait)
        {
            UpdateCountPosition();
            SetNextPointToLook();
            m_bAlreadyReached   = false;
            m_enPatrollingState = STATICPATROLLINGSTATE.PS_ROTATING;
        }

        PerformNotContinuesRotation();
    }
    private void PerformContinuesPatrolling()
    {
        if (!m_bAlreadySetted && !IsNextPositionReached(1.0f))
        {
            if (m_bClockWise)
            {
                if (!m_bIs2D)
                {
                    this.transform.Rotate(Vector3.up * Time.deltaTime * m_Speed);
                }
                else
                {
                    this.transform.Rotate(Vector3.left * Time.deltaTime * m_Speed);
                }
            }
            else
            {
                if (!m_bIs2D)
                {
                    this.transform.Rotate(-Vector3.up * Time.deltaTime * m_Speed);
                }
                else
                {
                    this.transform.Rotate(-Vector3.left * Time.deltaTime * m_Speed);
                }
            }
        }
        else
        {
            if (!m_bAlreadySetted)
            {
                m_bAlreadySetted    = true;
                m_fTimeToWait       = Time.time + m_WaitingTime[m_iCurrentPosition];
                m_enPatrollingState = STATICPATROLLINGSTATE.PS_WAITING;
            }

            if (Time.time > m_fTimeToWait && m_bAlreadySetted)
            {
                m_enPatrollingState = STATICPATROLLINGSTATE.PS_ROTATING;
                UpdateCountPosition();
                SetNextPointToLook();
                m_bAlreadySetted = false;

                UpdateClockwiseRotation();
            }
        }
    }
    private void PerformPatrolling()
    {
        if ( !m_bAlreadyReached && Time.time > m_fTimeToWait && IsNextPositionReached( 1.0f ) ) {
            m_bAlreadyReached   = true;
            m_fTimeToWait       = Time.time + m_WaitingTime[ m_iCurrentPosition ];
            if ( m_bRotateOnce )
                m_bRotateAlready = true;

            m_enPatrollingState = STATICPATROLLINGSTATE.PS_WAITING;
        }

        if ( !m_bRotateAlready && m_bAlreadyReached && Time.time > m_fTimeToWait ) {
            UpdateCountPosition();
            SetNextPointToLook();
            m_bAlreadyReached   = false;
            m_enPatrollingState = STATICPATROLLINGSTATE.PS_ROTATING;
        }

        PerformNotContinuesRotation();
    }
    private void PerformContinuesPatrolling()
    {
        if ( !m_bAlreadySetted && !IsNextPositionReached( 1.0f ) ) {
            if ( m_bClockWise )
                this.transform.Rotate( Vector3.up * Time.deltaTime * m_Speed );
            else
                this.transform.Rotate( -Vector3.up * Time.deltaTime * m_Speed );
        }
        else {
            if ( !m_bAlreadySetted ) {
                m_bAlreadySetted    = true;
                m_fTimeToWait       = Time.time + m_WaitingTime[ m_iCurrentPosition ];
                m_enPatrollingState = STATICPATROLLINGSTATE.PS_WAITING;
            }

            if ( Time.time > m_fTimeToWait && m_bAlreadySetted ) {
                m_enPatrollingState = STATICPATROLLINGSTATE.PS_ROTATING;
                UpdateCountPosition();
                SetNextPointToLook();
                m_bAlreadySetted    = false;

                UpdateClockwiseRotation();
            }
        }
    }