/// <summary> /// Grab the best suited handler for dragging. /// </summary> /// <param name="wrapper"></param> /// <param name="eventData"></param> /// <returns></returns> private static DragHandlerBase FindBestDragHandler(ItemCollectionSlotUIBase wrapper, PointerEventData eventData) { DragHandlerBase best = null; foreach (var handler in dragHandlers) { if (handler.CanUse(wrapper, eventData) && (best == null || handler.priority > best.priority)) { best = handler; } } return(best); }
public static UIDragModel OnBeginDrag(ItemCollectionSlotUIBase originalWrapper, PointerEventData eventData) { if (draggingItem != null) { Debug.LogWarning("Item still attached to cursor, can only drag one item at a time", draggingItem.gameObject); return(null); // Can only drag one item at a time } currentDragHandler = FindBestDragHandler(originalWrapper, eventData); if (currentDragHandler == null) { return(null); } var toDrag = CreateDragObject(originalWrapper); var lookup = currentDragHandler.OnBeginDrag(toDrag, eventData); if (OnStartDragging != null) { OnStartDragging(lookup, toDrag, eventData); } return(lookup); }