/// <summary>
        /// Check and remove out-of-view segment
        /// </summary>
        public void CheckOutOfViewSegment()
        {
            if (m_CurrentSegments.Count == 0)
            {
                return;
            }

            //Just have to check the first segment
            TrackSegment segmentToCheck = m_CurrentSegments[0];

            //Return to pool when out of view
            if (mainCamera.transform.position.x - mainCamera.GetHalfCameraWidth() - segmentToCheck.endPoint.position.x > m_ScreenOffsetError)
            {
                segmentToCheck.RemoveSelf();
                m_CurrentSegments.Remove(segmentToCheck);
            }
        }