Skip to content

Commit 3629a0d

Browse files
Added IsClosingClients to condition for loading offline vs online in SceneLoaderWrapper (#558)
1 parent 5ed69dd commit 3629a0d

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

Packages/com.unity.multiplayer.samples.coop/Utilities/SceneManagement/SceneLoaderWrapper.cs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ public class SceneLoaderWrapper : MonoBehaviour
2121

2222
public static SceneLoaderWrapper Instance { get; private set; }
2323

24+
public bool IsClosingClients { get; set; }
25+
2426
public void Awake()
2527
{
2628
if (Instance != null && Instance != this)
@@ -69,40 +71,42 @@ public void AddOnSceneEventCallback()
6971
/// <param name="loadSceneMode">If LoadSceneMode.Single then all current Scenes will be unloaded before loading.</param>
7072
public void LoadScene(string sceneName, LoadSceneMode loadSceneMode = LoadSceneMode.Single)
7173
{
72-
if (m_NetworkManager != null && m_NetworkManager.IsListening && !m_NetworkManager.ShutdownInProgress && m_NetworkManager.NetworkConfig.EnableSceneManagement)
74+
if (IsOffline() || IsClosingClients)
7375
{
74-
if (m_NetworkManager.IsServer)
76+
// If offline, load using SceneManager
77+
var loadOperation = SceneManager.LoadSceneAsync(sceneName, loadSceneMode);
78+
if (loadSceneMode == LoadSceneMode.Single)
7579
{
76-
// If is active server and NetworkManager uses scene management, load scene using NetworkManager's SceneManager
77-
m_NetworkManager.SceneManager.LoadScene(sceneName, loadSceneMode);
80+
m_ClientLoadingScreen.StartLoadingScreen(sceneName, loadOperation);
7881
}
7982
}
8083
else
8184
{
82-
// If offline, load using SceneManager
83-
var loadOperation = SceneManager.LoadSceneAsync(sceneName, loadSceneMode);
84-
if (loadSceneMode == LoadSceneMode.Single)
85+
if (m_NetworkManager.IsServer)
8586
{
86-
m_ClientLoadingScreen.StartLoadingScreen(sceneName, loadOperation);
87+
// If is active server and NetworkManager uses scene management, load scene using NetworkManager's SceneManager
88+
m_NetworkManager.SceneManager.LoadScene(sceneName, loadSceneMode);
8789
}
8890
}
8991
}
9092

91-
public bool IsClosingClients { get; set; }
92-
9393
void OnSceneLoaded(Scene scene, LoadSceneMode loadSceneMode)
9494
{
9595
// we're letting networked scene loading handle our loading screen, since there's still some loading happening after unity scene loading is done.
9696
// in case we're offline, then we let unity's scene loader tell us when to turn off the loading screen.
97-
var isOffline = m_NetworkManager == null || !m_NetworkManager.IsListening || m_NetworkManager.ShutdownInProgress || !m_NetworkManager.NetworkConfig.EnableSceneManagement;
9897
// TODO this can be called while we're still in the WaitForSeconds(0.5) while shutting down host side. which means we'll still be in theory connected. Waiting on fix
9998
// for this in MTT-2821
100-
if (isOffline || IsClosingClients)
99+
if (IsOffline() || IsClosingClients)
101100
{
102101
m_ClientLoadingScreen.StopLoadingScreen();
103102
}
104103
}
105104

105+
bool IsOffline()
106+
{
107+
return m_NetworkManager == null || !m_NetworkManager.IsListening || m_NetworkManager.ShutdownInProgress || !m_NetworkManager.NetworkConfig.EnableSceneManagement;
108+
}
109+
106110
void OnSceneEvent(SceneEvent sceneEvent)
107111
{
108112
// Only executes on client

0 commit comments

Comments
 (0)