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();
        }
 private void HandleOnDragStarted(DragStartPayload payload)
 {
     currentStartPayload = payload;
     CreatePreview();
 }