public void OnDrag(ExtendedPointerEventData eventData)
            {
                //Touch event
                if (eventData.touchId != 0)
                {
                    for (int i = 0; i < _currentInputCount; i++)
                    {
                        if (_activeDragInputs[i]._touchId == eventData.touchId)
                        {
                            _activeDragInputs[i]._position = eventData.position;
                            return;
                        }
                    }
                }

                //Pointer event
                {
                    for (int i = 0; i < _currentInputCount; i++)
                    {
                        if (_activeDragInputs[i]._pointerId == eventData.pointerId)
                        {
                            _activeDragInputs[i]._position = eventData.position;
                            return;
                        }
                    }
                }
            }
            public void OnEndDrag(ExtendedPointerEventData eventData)
            {
                bool foundInput = false;

                for (int i = 0; i < _currentInputCount; i++)
                {
                    if ((eventData.touchId != 0 && _activeDragInputs[i]._touchId == eventData.touchId) || (eventData.touchId == 0 && _activeDragInputs[i]._pointerId == eventData.pointerId))
                    {
                        foundInput = true;
                    }

                    if (foundInput && i < _currentInputCount - 1)
                    {
                        _activeDragInputs[i] = _activeDragInputs[i + 1];
                    }
                }

                if (foundInput)
                {
                    _currentInputCount--;
                }
            }
            public void OnBeginDrag(ExtendedPointerEventData eventData)
            {
                //Touch event
                if (eventData.touchId != 0)
                {
                    for (int i = 0; i < _currentInputCount; i++)
                    {
                        if (_activeDragInputs[i]._touchId == eventData.touchId)
                        {
                            _activeDragInputs[i]._position = eventData.position;
                            return;
                        }
                    }
                }

                //Pointer event
                {
                    for (int i = 0; i < _currentInputCount; i++)
                    {
                        if (_activeDragInputs[i]._pointerId == eventData.pointerId)
                        {
                            _activeDragInputs[i]._position = eventData.position;
                            return;
                        }
                    }
                }

                //New input
                if (_currentInputCount < _activeDragInputs.Length)
                {
                    _activeDragInputs[_currentInputCount]._touchId   = eventData.touchId;
                    _activeDragInputs[_currentInputCount]._pointerId = eventData.pointerId;
                    _activeDragInputs[_currentInputCount]._position  = eventData.position;
                    _activeDragInputs[_currentInputCount]._camera    = eventData.pressEventCamera;
                    _currentInputCount++;
                }
            }