void SwitchNextPoint()
    {
        int currentPointIndex = (int)m_currentBird.m_nextPoint;
        int lastPointIndex    = (int)m_currentBird.m_LastPoint;

        int NextPointIndex = currentPointIndex + m_birdWalkingDirection;

        if (NextPointIndex == Enum.GetNames(typeof(RooMBirdPoints)).Length)
        {
            m_currentBird.m_currentBirdState = Bird.BirdState.Finished_Idle;
            m_currentBird.SetPosition(m_roomManager.m_birdFinishPoints[m_currentBird.m_id].position);
            m_currentBird.PlayIdleAnimation();

            m_gameManager.BirdReachedTargetPosition(m_currentBird);

            return;
        }

        if (NextPointIndex < 0)
        {
            NextPointIndex = 3;
        }

        RooMBirdPoints lastPoint = m_currentBird.m_nextPoint;

        m_currentBird.m_nextPoint = (RooMBirdPoints)NextPointIndex;
        m_currentBird.m_LastPoint = lastPoint;

        Vector3 toPosition   = m_roomManager.m_birdMovePoints [(int)m_currentBird.m_nextPoint].position;
        Vector3 fromPosition = m_roomManager.m_birdMovePoints [(int)m_currentBird.m_LastPoint].position;

        SwitchBirdAnimation(toPosition, fromPosition);
    }
    void MoveBird(RooMBirdPoints nextPoint)
    {
        Vector3 toPosition      = m_roomManager.m_birdMovePoints [(int)nextPoint].position;
        float   step            = m_birdSpeed * Time.deltaTime;
        Vector3 birdNexPositons = Vector3.MoveTowards(m_currentBird.CurrentPosition, toPosition, step);

        m_currentBird.SetPosition(birdNexPositons);

        float m_distanceToNextPoint = Vector3.Distance(m_currentBird.CurrentPosition, toPosition);
        bool  reachedNextPoint      = MathUtility.IsAproximately(0.0f, m_distanceToNextPoint, 0.2f);

        if (reachedNextPoint)
        {
            if (m_currentBird.m_nextPoint == RooMBirdPoints.F_PointD)
            {
                //m_currentBird.m_currentStage = RoomManager.RoomStages.Ladder;

                if (m_currentBird.m_LastPoint == RooMBirdPoints.F_PointA)
                {
                    m_birdWalkingDirection *= -1;
                }
            }
            SwitchNextPoint();
        }
    }
    void SwitchBirdDirection()
    {
        RooMBirdPoints lastPoint = m_currentBird.m_nextPoint;

        m_currentBird.m_nextPoint = m_currentBird.m_LastPoint;
        m_currentBird.m_LastPoint = lastPoint;
        m_birdWalkingDirection   *= -1;

        Vector3 toPosition   = m_roomManager.m_birdMovePoints [(int)m_currentBird.m_nextPoint].position;
        Vector3 fromPosition = m_roomManager.m_birdMovePoints [(int)m_currentBird.m_LastPoint].position;

        SwitchBirdAnimation(toPosition, fromPosition);
    }