void UpdateSeamlessPagePositions()
        {
            if (!Application.isPlaying)
            {
                return;
            }
            if (!LoopSeamlessly)
            {
                return;
            }
            //if (NumberOfPages <= 1) return; // there's no point in adjusting page positions if we only have one page

            if (NumberOfPages <= 3)
            {
                return;
            }

            if (ShowPagePreviews)
            {
                UpdateSeamlessPagePositions_PagePreviews();
                return;
            }

            float pageSize = ScrollRect.GetPageSize();

            float totalSize = ScrollRect.GetTotalSize();
            float offset    = ScrollRect.GetOffset();

            //Debug.Log(offset + " ~~ " + pageSize);

            //Debug.Log("Distance from start " + offset + ". Distance from end " + (totalSize - offset));

            // let's give it a bit more breathing room (if we have enough pages to do so)
            if (NumberOfPages > 3)
            {
                pageSize *= 1.5f;
            }

            if (offset <= pageSize)
            {
                MoveLastPageToStart();
            }
            else if (offset >= totalSize - pageSize)
            {
                MoveFirstPageToEnd();
            }
        }
        void AdjustScrollPositionAfterPageMoved(eDirection directionMoved)
        {
            var   oneOrMinusOne = directionMoved == eDirection.Left ? -1 : 1;
            float pageSize      = ScrollRect.GetPageSize();

            var directionVector = ScrollRect.GetDirectionVector();
            var adjustment      = (directionVector * (pageSize + SpaceBetweenPages) * oneOrMinusOne);

            ScrollRect.ResetDragOffset           = true;
            ScrollRect.content.anchoredPosition += adjustment;

            UpdatePages();

            // if we're already scrolling, stop, recalculate, and scroll from there
            if (scrollCoroutine != null)
            {
                scrollRectAnimation_InitialPosition += adjustment;
                scrollRectAnimation_DesiredPosition += adjustment;
            }
        }