It is very strange, but the function SetTimer does not call the call-back function.
UWorld* UKLocalPlayer::GetWorld() const
{
check(GEngine);
check(GEngine->GameViewport);
UGameInstance* GameInstance = GEngine->GameViewport->GetGameInstance();
return GameInstance->GetWorld();
}
FTimerManager& UKLocalPlayer::GetWorldTimerManager() const
{
return GetWorld()->GetTimerManager();
}
void UKLocalPlayer::LeaveGame(const FText& InMessage /*= FText::GetEmpty()*/, float InDelay /*= 3.0f*/)
{
#if !UE_SERVER
FTimerDelegate TimerDelegate;
TimerDelegate = FTimerDelegate::CreateUObject(this, &ThisClass::LeaveGameDelayed);
FTimerHandle TempHandle;
GetWorldTimerManager().SetTimer(TempHandle, TimerDelegate, InDelay, false);
if (!InMessage.IsEmpty())
MessageToast(InMessage, InDelay);
#endif
}
#if !UE_SERVER
void UKLocalPlayer::LeaveGameDelayed()
{
Exec(GetWorld(), TEXT("quit"), *GLog);
}
#endif
The function LeaveGameDelayed() is never called.
Something changed with 4.13 ?
Txs.