void UPlayerInventory::Take(AInventoryItem * Item)
{
if (IsFull())
{
return;
}
AInventoryItem * ItemToTake = Item;
if (!ItemToTake->GetLevel()->IsPersistentLevel())
{
FActorSpawnParameters SpawnParams;
SpawnParams.Template = ItemToTake;
// Queue old one to destroy.
ItemToTake->Destroy();
// Create using old one as template.
ItemToTake = (AInventoryItem*)(GetWorld()->SpawnActor<AInventoryItem>(Item->GetClass(), SpawnParams));
}
OwnedItems.Add(ItemToTake);
ItemToTake->OnTake();
SetActiveItem(ItemToTake);
}