/// <summary>
/// Try to drop an item.
/// </summary>
/// <param name="itemIdentifier">The item identifier to drop.</param>
/// <param name="slotID">The slot id of the item to drop.</param>
/// <param name="amount">The amount to drop.</param>
/// <returns>The dropped instance.</returns>
protected virtual GameObject TryDropItemInstance(IItemIdentifier itemIdentifier, int slotID, int amount)
{
GameObject dropInstance = null;
if (TryGetCharacterItem(itemIdentifier, slotID, out var characterItem)) {
dropInstance = DropCharacterItem(characterItem, amount, false, false);
} else if (m_DropPrefab != null) {
var dropPosition = transform.position + transform.TransformDirection(m_DropOffset);
var dropRotation = transform.rotation;
var dropAmount = new ItemIdentifierAmount(itemIdentifier, amount);
dropInstance = DropItemIdentifiers(m_DropPrefab, dropPosition, dropRotation, dropAmount, false, false);
}
return dropInstance;
}