We would like to know if there is a better way to pause the game but allow world partition streaming states to continue updating in the background, without requiring making engine source modifictations.
Current we had to make an engine modification in “LevelTick.cpp” “UWorld::Tick” where we changed this check:
// Update streaming volumes
#if UE_SUPPORT_FOR_ACTOR_TICK_DISABLE
if (IsActorTickAndUserCallbacksEnabled())
#endif
{
if (!bIsPaused && IsGameWorld())
{
// Update world's required streaming levels
InternalUpdateStreamingState();
}
}
}
To this:
// Update streaming volumes
#if UE_SUPPORT_FOR_ACTOR_TICK_DISABLE
if (IsActorTickAndUserCallbacksEnabled())
#endif
{
const bool bPauseStreaming = (bRequestedBlockOnAsyncLoading && GetNetMode() == NM_Client) ||
GEngine->ShouldCommitPendingMapChange(this) ||
(IsPlayInEditor() && bDebugPauseExecution);
if (!bPauseStreaming && IsGameWorld())
{
// Update world's required streaming levels
InternalUpdateStreamingState();
}
}
Which is effectively copying the “IsPaused” method, so we respect the other state of the engine, but without looking at whether the game was explicitly paused or not.
Is this considered a safe change or are there implications in having the streaming running in the background asynchronously while the game is paused?
Is there a better solution/alternative to this?
[Attachment Removed]