private void HandleOnDragEnded(DragStopPayload payload) { if (!IsDragging()) { return; } ItemSlot origin = currentStartPayload.originatingSlot; ItemInventoryTile tile = currentStartPayload.draggedTile; ItemSlot destination = payload?.destinationSlot; if (payload != null && destination != origin && canDrop) { if (destination.IsOccupied()) { origin.RemoveItemTile(); ItemInventoryTile tempTile = destination.GetItemTile(); destination.RemoveItemTile(); origin.AddItemTile(tempTile); destination.DropDnDItem(tile); } else { origin.RemoveItemTile(); destination.DropDnDItem(tile); } } else { origin.CancelDnD(); } currentStartPayload = null; DestroyPreview(); }