@@ -89,6 +89,11 @@ public class NetworkManager : MonoBehaviour, INetworkUpdateSystem, IProfilableTr
89
89
/// </summary>
90
90
public static NetworkManager Singleton { get ; private set ; }
91
91
92
+ /// <summary>
93
+ /// Gets the SpawnManager for this NetworkManager
94
+ /// </summary>
95
+ public NetworkSpawnManager SpawnManager { get ; private set ; }
96
+
92
97
/// <summary>
93
98
/// Gets the networkId of the server
94
99
/// </summary>
@@ -313,10 +318,9 @@ private void Init(bool server)
313
318
ConnectedClients . Clear ( ) ;
314
319
ConnectedClientsList . Clear ( ) ;
315
320
316
- NetworkSpawnManager . SpawnedObjects . Clear ( ) ;
317
- NetworkSpawnManager . SpawnedObjectsList . Clear ( ) ;
318
- NetworkSpawnManager . ReleasedNetworkObjectIds . Clear ( ) ;
319
- NetworkSpawnManager . PendingSoftSyncObjects . Clear ( ) ;
321
+ // Create spawn manager instance
322
+ SpawnManager = new NetworkSpawnManager ( this ) ;
323
+
320
324
NetworkSceneManager . RegisteredSceneNames . Clear ( ) ;
321
325
NetworkSceneManager . SceneIndexToString . Clear ( ) ;
322
326
NetworkSceneManager . SceneNameToIndex . Clear ( ) ;
@@ -441,7 +445,7 @@ public SocketTasks StartServer()
441
445
IsClient = false ;
442
446
IsListening = true ;
443
447
444
- NetworkSpawnManager . ServerSpawnSceneObjectsOnStartSweep ( ) ;
448
+ SpawnManager . ServerSpawnSceneObjectsOnStartSweep ( ) ;
445
449
446
450
OnServerStarted ? . Invoke ( ) ;
447
451
@@ -617,7 +621,7 @@ public SocketTasks StartHost()
617
621
HandleApproval ( ServerClientId , NetworkConfig . CreatePlayerPrefab , null , true , null , null ) ;
618
622
}
619
623
620
- NetworkSpawnManager . ServerSpawnSceneObjectsOnStartSweep ( ) ;
624
+ SpawnManager . ServerSpawnSceneObjectsOnStartSweep ( ) ;
621
625
622
626
OnServerStarted ? . Invoke ( ) ;
623
627
@@ -691,8 +695,11 @@ public void Shutdown()
691
695
IsServer = false ;
692
696
IsClient = false ;
693
697
NetworkConfig . NetworkTransport . OnTransportEvent -= HandleRawTransportPoll ;
694
- NetworkSpawnManager . DestroyNonSceneObjects ( ) ;
695
- NetworkSpawnManager . ServerResetShudownStateForSceneObjects ( ) ;
698
+
699
+ SpawnManager . DestroyNonSceneObjects ( ) ;
700
+ SpawnManager . ServerResetShudownStateForSceneObjects ( ) ;
701
+
702
+ SpawnManager = null ;
696
703
697
704
//The Transport is set during Init time, thus it is possible for the Transport to be null
698
705
NetworkConfig ? . NetworkTransport ? . Shutdown ( ) ;
@@ -1213,7 +1220,7 @@ private static void ReceiveCallback(NetworkBuffer messageBuffer, RpcQueueContain
1213
1220
/// </summary>
1214
1221
/// <param name="queueItem">frame queue item to invoke</param>
1215
1222
#pragma warning disable 618
1216
- internal static void InvokeRpc ( RpcFrameQueueItem queueItem )
1223
+ internal void InvokeRpc ( RpcFrameQueueItem queueItem )
1217
1224
{
1218
1225
#if DEVELOPMENT_BUILD || UNITY_EDITOR
1219
1226
s_InvokeRpc . Begin ( ) ;
@@ -1225,12 +1232,12 @@ internal static void InvokeRpc(RpcFrameQueueItem queueItem)
1225
1232
1226
1233
if ( __ntable . ContainsKey ( networkMethodId ) )
1227
1234
{
1228
- if ( ! NetworkSpawnManager . SpawnedObjects . ContainsKey ( networkObjectId ) )
1235
+ if ( ! SpawnManager . SpawnedObjects . ContainsKey ( networkObjectId ) )
1229
1236
{
1230
1237
return ;
1231
1238
}
1232
1239
1233
- var networkObject = NetworkSpawnManager . SpawnedObjects [ networkObjectId ] ;
1240
+ var networkObject = SpawnManager . SpawnedObjects [ networkObjectId ] ;
1234
1241
1235
1242
var networkBehaviour = networkObject . GetNetworkBehaviourAtOrderIndex ( networkBehaviourId ) ;
1236
1243
if ( networkBehaviour == null )
@@ -1344,10 +1351,10 @@ internal void OnClientDisconnectFromServer(ulong clientId)
1344
1351
{
1345
1352
if ( ConnectedClients [ clientId ] . PlayerObject != null )
1346
1353
{
1347
- if ( NetworkSpawnManager . CustomDestroyHandlers . ContainsKey ( ConnectedClients [ clientId ] . PlayerObject . PrefabHash ) )
1354
+ if ( SpawnManager . CustomDestroyHandlers . ContainsKey ( ConnectedClients [ clientId ] . PlayerObject . PrefabHash ) )
1348
1355
{
1349
- NetworkSpawnManager . CustomDestroyHandlers [ ConnectedClients [ clientId ] . PlayerObject . PrefabHash ] ( ConnectedClients [ clientId ] . PlayerObject ) ;
1350
- NetworkSpawnManager . OnDestroyObject ( ConnectedClients [ clientId ] . PlayerObject . NetworkObjectId , false ) ;
1356
+ SpawnManager . CustomDestroyHandlers [ ConnectedClients [ clientId ] . PlayerObject . PrefabHash ] ( ConnectedClients [ clientId ] . PlayerObject ) ;
1357
+ SpawnManager . OnDestroyObject ( ConnectedClients [ clientId ] . PlayerObject . NetworkObjectId , false ) ;
1351
1358
}
1352
1359
else
1353
1360
{
@@ -1361,10 +1368,10 @@ internal void OnClientDisconnectFromServer(ulong clientId)
1361
1368
{
1362
1369
if ( ! ConnectedClients [ clientId ] . OwnedObjects [ i ] . DontDestroyWithOwner )
1363
1370
{
1364
- if ( NetworkSpawnManager . CustomDestroyHandlers . ContainsKey ( ConnectedClients [ clientId ] . OwnedObjects [ i ] . PrefabHash ) )
1371
+ if ( SpawnManager . CustomDestroyHandlers . ContainsKey ( ConnectedClients [ clientId ] . OwnedObjects [ i ] . PrefabHash ) )
1365
1372
{
1366
- NetworkSpawnManager . CustomDestroyHandlers [ ConnectedClients [ clientId ] . OwnedObjects [ i ] . PrefabHash ] ( ConnectedClients [ clientId ] . OwnedObjects [ i ] ) ;
1367
- NetworkSpawnManager . OnDestroyObject ( ConnectedClients [ clientId ] . OwnedObjects [ i ] . NetworkObjectId , false ) ;
1373
+ SpawnManager . CustomDestroyHandlers [ ConnectedClients [ clientId ] . OwnedObjects [ i ] . PrefabHash ] ( ConnectedClients [ clientId ] . OwnedObjects [ i ] ) ;
1374
+ SpawnManager . OnDestroyObject ( ConnectedClients [ clientId ] . OwnedObjects [ i ] . NetworkObjectId , false ) ;
1368
1375
}
1369
1376
else
1370
1377
{
@@ -1380,7 +1387,7 @@ internal void OnClientDisconnectFromServer(ulong clientId)
1380
1387
1381
1388
// TODO: Could(should?) be replaced with more memory per client, by storing the visiblity
1382
1389
1383
- foreach ( var sobj in NetworkSpawnManager . SpawnedObjectsList )
1390
+ foreach ( var sobj in SpawnManager . SpawnedObjectsList )
1384
1391
{
1385
1392
sobj . Observers . Remove ( clientId ) ;
1386
1393
}
@@ -1446,15 +1453,15 @@ internal void HandleApproval(ulong ownerClientId, bool createPlayerObject, ulong
1446
1453
1447
1454
if ( createPlayerObject )
1448
1455
{
1449
- var networkObject = NetworkSpawnManager . CreateLocalNetworkObject ( false , 0 , playerPrefabHash ?? NetworkConfig . PlayerPrefabHash . Value , ownerClientId , null , position , rotation ) ;
1450
- NetworkSpawnManager . SpawnNetworkObjectLocally ( networkObject , NetworkSpawnManager . GetNetworkObjectId ( ) , false , true , ownerClientId , null , false , 0 , false , false ) ;
1456
+ var networkObject = SpawnManager . CreateLocalNetworkObject ( false , 0 , playerPrefabHash ?? NetworkConfig . PlayerPrefabHash . Value , ownerClientId , null , position , rotation ) ;
1457
+ SpawnManager . SpawnNetworkObjectLocally ( networkObject , SpawnManager . GetNetworkObjectId ( ) , false , true , ownerClientId , null , false , 0 , false , false ) ;
1451
1458
1452
1459
ConnectedClients [ ownerClientId ] . PlayerObject = networkObject ;
1453
1460
}
1454
1461
1455
1462
m_ObservedObjects . Clear ( ) ;
1456
1463
1457
- foreach ( var sobj in NetworkSpawnManager . SpawnedObjectsList )
1464
+ foreach ( var sobj in SpawnManager . SpawnedObjectsList )
1458
1465
{
1459
1466
if ( ownerClientId == ServerClientId || sobj . CheckObjectVisibility == null || sobj . CheckObjectVisibility ( ownerClientId ) )
1460
1467
{
0 commit comments