public virtual void OnPointerDown(PointerEventData eventData)
        {
            if (itemCollection == null)
                return;

            pointerDownOnUIElement = InventoryUIUtility.currentlyHoveringWrapper;
            if (pointerDownOnUIElement == null)
                return;


            //////////// Ugly hack, because input modules will take over soon.
            bool tapped = OnTap(eventData, InventoryActionInput.EventType.OnPointerDown); // Mobile version of OnPointerUp
            if (tapped)
            {
                return;
            }

            if (InventorySettingsManager.instance.useContextMenu && InventorySettingsManager.instance.triggerContextMenuKeys.AllPressed(eventData, InventoryActionInput.EventType.OnPointerDown))
            {
                if (item != null)
                {
                    TriggerContextMenu();
                    return;
                }
            }

            if (isDoubleTap)
            {
                OnDoubleTap(eventData, InventoryActionInput.EventType.OnPointerDown);
                return;
            }

            lastDownTime = Time.timeSinceLevelLoad;
        }
        public virtual void OnPointerUp(PointerEventData eventData)
        {
            // Started on a UI element?
            if (pointerDownOnUIElement == null)
                return;

            pointerDownOnUIElement = null;

            // Cursor still inside the button on Pointer up?
            var canvas = gameObject.GetComponentInParent<Canvas>();
            if(canvas.renderMode != RenderMode.WorldSpace)
            {
                if (screenSpaceRect.Contains(eventData.position) == false)
                    return;
            }

            if (InventorySettingsManager.instance.useContextMenu || itemCollection == null)
                return;

            bool tapped = OnTap(eventData, InventoryActionInput.EventType.OnPointerUp); // Mobile version of OnPointerUp
            if (tapped)
            {
                return;
            }

            if (isDoubleTap)
            {
                OnDoubleTap(eventData, InventoryActionInput.EventType.OnPointerUp);
                return;
            }

            if (item != null && InventoryUIDragUtility.isDraggingItem == false)
            {
                // Check if we're trying to unstack
                if (itemCollection.useReferences == false && InventorySettingsManager.instance.useUnstackClick && itemCollection.canUnstackItemsInCollection)
                {
                    if (InventorySettingsManager.instance.unstackKeys.AllPressed(eventData, InventoryActionInput.EventType.OnPointerUp))
                    {
                        TriggerUnstack(itemCollection);
                        return; // Stop the rest otherwise we'll do 2 actions at once.
                    }
                }

                // Use the item
                if (InventorySettingsManager.instance.useItemKeys.AllPressed(eventData, InventoryActionInput.EventType.OnPointerUp))
                    TriggerUse();

            }
        }
        /// <summary>
        /// When the cursor exits an item
        /// </summary>
        /// <param name="wrapper"></param>
        /// <param name="eventData"></param>
        private void NotifyCursorExitWrapper(InventoryUIItemWrapperBase wrapper)
        {
            if (OnCursorExitWrapper != null)
                OnCursorExitWrapper(wrapper);

        }