Thanks for this!
To expand on this, if allocation of the list isn’t necessary, it can be done like so:
UQuestStage* newStage = NewObject<UQuestStage>(this->GetOuter(), NAME_None, RF_NoFlags, stage->GetDefaultObject(), true);
if( !newStage )
{
UE_LOG(QuestSystem, Warning, TEXT("Quest Stage Object not valid!"));
return;
}
TLinkedDoubleList<UQuestStage> LQuestStages;
if ( LQuestStages.IsEmpty() )
{
LQuestStages.AddHead(newStage);
}
else
{
LQuestStages.AddTail(newStage);
}
for( auto QuestStage : LQuestStages)
{
UE_LOG(QuestSystem, Warning, TEXT("Stage Name: %s"), *QuestStage->Name);
}