RestartPlayerAtPlayerStart() respawned player on it's location but not at a PlayerStart

This code works for me:


if (Owner)
{
    TArray<AActor*> FoundActors;
    UGameplayStatics::GetAllActorsOfClass(GetWorld(), APlayerStart::StaticClass(), FoundActors);
    auto PlayerStart = Cast<APlayerStart>(FoundActors[0]);

    auto PlayerController = Owner->GetController();
    PlayerController->UnPossess();

    auto PlayerClass = Owner->GetClass();

    auto NewCharacter = GetWorld()->SpawnActor<AActor>(PlayerClass, PlayerStart->GetActorLocation(), PlayerStart->GetActorRotation());

    if (NewCharacter)
    {
        auto CharacterToPossess = Cast<ACharacter>(NewCharacter);
        if (CharacterToPossess)
        {
            PlayerController->Possess(CharacterToPossess);
            Owner->Destroy();
        }
    }
}

But still interesting in the RestartPlayerAtPlayerStart() logic