public void OnDrag(PointerEventData eventData)
        {
            if (eventData.pointerId != draggingPointer)
            {
                eventData.pointerDrag = null;
                return;
            }

            manager.UpdateSelection(initialPosition + manager.GetTouchPosition(eventData.position, eventData.pressEventCamera) - initialTouchPosition);
        }
        public void OnDrag(PointerEventData eventData)
        {
            if (eventData.pointerId != draggingPointer)
            {
                eventData.pointerDrag = null;
                return;
            }

            draggingPointerEventData = eventData;

            Vector2 newPosition       = initialPosition + manager.GetTouchPosition(eventData.position, eventData.pressEventCamera) - initialTouchPosition;
            Vector2 selectionPosition = initialSelectionPosition;
            Vector2 selectionSize     = initialSelectionSize;

            if ((directions & Direction.Left) == Direction.Left)
            {
                if (newPosition.x < manager.SelectionSnapToEdgeThreshold)
                {
                    newPosition.x = 0f;
                }

                selectionSize.x    -= newPosition.x - selectionPosition.x;
                selectionPosition.x = newPosition.x;
            }
            else if ((directions & Direction.Right) == Direction.Right)
            {
                if (newPosition.x > manager.OrientedImageSize.x - manager.SelectionSnapToEdgeThreshold)
                {
                    newPosition.x = manager.OrientedImageSize.x;
                }

                selectionSize.x = newPosition.x - selectionPosition.x;
            }

            if ((directions & Direction.Top) == Direction.Top)
            {
                if (newPosition.y > manager.OrientedImageSize.y - manager.SelectionSnapToEdgeThreshold)
                {
                    newPosition.y = manager.OrientedImageSize.y;
                }

                selectionSize.y = newPosition.y - selectionPosition.y;
            }
            else if ((directions & Direction.Bottom) == Direction.Bottom)
            {
                if (newPosition.y < manager.SelectionSnapToEdgeThreshold)
                {
                    newPosition.y = 0f;
                }

                selectionSize.y    -= newPosition.y - selectionPosition.y;
                selectionPosition.y = newPosition.y;
            }

            bool shouldExpand = false;

            if (secondaryDirection == Direction.None)
            {
                if (direction == Direction.Left || direction == Direction.Right)
                {
                    if (selectionSize.x > initialSelectionSize.x)
                    {
                        shouldExpand = true;
                    }
                }
                else
                {
                    if (selectionSize.y > initialSelectionSize.y)
                    {
                        shouldExpand = true;
                    }
                }
            }

            manager.UpdateSelection(selectionPosition, selectionSize, pivot, !shouldExpand);
        }