@@ -21,6 +21,8 @@ public class SceneLoaderWrapper : MonoBehaviour
21
21
22
22
public static SceneLoaderWrapper Instance { get ; private set ; }
23
23
24
+ public bool IsClosingClients { get ; set ; }
25
+
24
26
public void Awake ( )
25
27
{
26
28
if ( Instance != null && Instance != this )
@@ -69,40 +71,42 @@ public void AddOnSceneEventCallback()
69
71
/// <param name="loadSceneMode">If LoadSceneMode.Single then all current Scenes will be unloaded before loading.</param>
70
72
public void LoadScene ( string sceneName , LoadSceneMode loadSceneMode = LoadSceneMode . Single )
71
73
{
72
- if ( m_NetworkManager != null && m_NetworkManager . IsListening && ! m_NetworkManager . ShutdownInProgress && m_NetworkManager . NetworkConfig . EnableSceneManagement )
74
+ if ( IsOffline ( ) || IsClosingClients )
73
75
{
74
- if ( m_NetworkManager . IsServer )
76
+ // If offline, load using SceneManager
77
+ var loadOperation = SceneManager . LoadSceneAsync ( sceneName , loadSceneMode ) ;
78
+ if ( loadSceneMode == LoadSceneMode . Single )
75
79
{
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 ) ;
78
81
}
79
82
}
80
83
else
81
84
{
82
- // If offline, load using SceneManager
83
- var loadOperation = SceneManager . LoadSceneAsync ( sceneName , loadSceneMode ) ;
84
- if ( loadSceneMode == LoadSceneMode . Single )
85
+ if ( m_NetworkManager . IsServer )
85
86
{
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 ) ;
87
89
}
88
90
}
89
91
}
90
92
91
- public bool IsClosingClients { get ; set ; }
92
-
93
93
void OnSceneLoaded ( Scene scene , LoadSceneMode loadSceneMode )
94
94
{
95
95
// we're letting networked scene loading handle our loading screen, since there's still some loading happening after unity scene loading is done.
96
96
// 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 ;
98
97
// 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
99
98
// for this in MTT-2821
100
- if ( isOffline || IsClosingClients )
99
+ if ( IsOffline ( ) || IsClosingClients )
101
100
{
102
101
m_ClientLoadingScreen . StopLoadingScreen ( ) ;
103
102
}
104
103
}
105
104
105
+ bool IsOffline ( )
106
+ {
107
+ return m_NetworkManager == null || ! m_NetworkManager . IsListening || m_NetworkManager . ShutdownInProgress || ! m_NetworkManager . NetworkConfig . EnableSceneManagement ;
108
+ }
109
+
106
110
void OnSceneEvent ( SceneEvent sceneEvent )
107
111
{
108
112
// Only executes on client
0 commit comments