@@ -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,14 @@ 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
+ if ( SpawnManager != null )
700
+ {
701
+ SpawnManager . DestroyNonSceneObjects ( ) ;
702
+ SpawnManager . ServerResetShudownStateForSceneObjects ( ) ;
703
+
704
+ SpawnManager = null ;
705
+ }
696
706
697
707
//The Transport is set during Init time, thus it is possible for the Transport to be null
698
708
NetworkConfig ? . NetworkTransport ? . Shutdown ( ) ;
@@ -1213,7 +1223,7 @@ private static void ReceiveCallback(NetworkBuffer messageBuffer, RpcQueueContain
1213
1223
/// </summary>
1214
1224
/// <param name="queueItem">frame queue item to invoke</param>
1215
1225
#pragma warning disable 618
1216
- internal static void InvokeRpc ( RpcFrameQueueItem queueItem )
1226
+ internal void InvokeRpc ( RpcFrameQueueItem queueItem )
1217
1227
{
1218
1228
#if DEVELOPMENT_BUILD || UNITY_EDITOR
1219
1229
s_InvokeRpc . Begin ( ) ;
@@ -1225,12 +1235,12 @@ internal static void InvokeRpc(RpcFrameQueueItem queueItem)
1225
1235
1226
1236
if ( __ntable . ContainsKey ( networkMethodId ) )
1227
1237
{
1228
- if ( ! NetworkSpawnManager . SpawnedObjects . ContainsKey ( networkObjectId ) )
1238
+ if ( ! SpawnManager . SpawnedObjects . ContainsKey ( networkObjectId ) )
1229
1239
{
1230
1240
return ;
1231
1241
}
1232
1242
1233
- var networkObject = NetworkSpawnManager . SpawnedObjects [ networkObjectId ] ;
1243
+ var networkObject = SpawnManager . SpawnedObjects [ networkObjectId ] ;
1234
1244
1235
1245
var networkBehaviour = networkObject . GetNetworkBehaviourAtOrderIndex ( networkBehaviourId ) ;
1236
1246
if ( networkBehaviour == null )
@@ -1344,10 +1354,10 @@ internal void OnClientDisconnectFromServer(ulong clientId)
1344
1354
{
1345
1355
if ( ConnectedClients [ clientId ] . PlayerObject != null )
1346
1356
{
1347
- if ( NetworkSpawnManager . CustomDestroyHandlers . ContainsKey ( ConnectedClients [ clientId ] . PlayerObject . PrefabHash ) )
1357
+ if ( SpawnManager . CustomDestroyHandlers . ContainsKey ( ConnectedClients [ clientId ] . PlayerObject . PrefabHash ) )
1348
1358
{
1349
- NetworkSpawnManager . CustomDestroyHandlers [ ConnectedClients [ clientId ] . PlayerObject . PrefabHash ] ( ConnectedClients [ clientId ] . PlayerObject ) ;
1350
- NetworkSpawnManager . OnDestroyObject ( ConnectedClients [ clientId ] . PlayerObject . NetworkObjectId , false ) ;
1359
+ SpawnManager . CustomDestroyHandlers [ ConnectedClients [ clientId ] . PlayerObject . PrefabHash ] ( ConnectedClients [ clientId ] . PlayerObject ) ;
1360
+ SpawnManager . OnDestroyObject ( ConnectedClients [ clientId ] . PlayerObject . NetworkObjectId , false ) ;
1351
1361
}
1352
1362
else
1353
1363
{
@@ -1361,10 +1371,10 @@ internal void OnClientDisconnectFromServer(ulong clientId)
1361
1371
{
1362
1372
if ( ! ConnectedClients [ clientId ] . OwnedObjects [ i ] . DontDestroyWithOwner )
1363
1373
{
1364
- if ( NetworkSpawnManager . CustomDestroyHandlers . ContainsKey ( ConnectedClients [ clientId ] . OwnedObjects [ i ] . PrefabHash ) )
1374
+ if ( SpawnManager . CustomDestroyHandlers . ContainsKey ( ConnectedClients [ clientId ] . OwnedObjects [ i ] . PrefabHash ) )
1365
1375
{
1366
- NetworkSpawnManager . CustomDestroyHandlers [ ConnectedClients [ clientId ] . OwnedObjects [ i ] . PrefabHash ] ( ConnectedClients [ clientId ] . OwnedObjects [ i ] ) ;
1367
- NetworkSpawnManager . OnDestroyObject ( ConnectedClients [ clientId ] . OwnedObjects [ i ] . NetworkObjectId , false ) ;
1376
+ SpawnManager . CustomDestroyHandlers [ ConnectedClients [ clientId ] . OwnedObjects [ i ] . PrefabHash ] ( ConnectedClients [ clientId ] . OwnedObjects [ i ] ) ;
1377
+ SpawnManager . OnDestroyObject ( ConnectedClients [ clientId ] . OwnedObjects [ i ] . NetworkObjectId , false ) ;
1368
1378
}
1369
1379
else
1370
1380
{
@@ -1380,7 +1390,7 @@ internal void OnClientDisconnectFromServer(ulong clientId)
1380
1390
1381
1391
// TODO: Could(should?) be replaced with more memory per client, by storing the visiblity
1382
1392
1383
- foreach ( var sobj in NetworkSpawnManager . SpawnedObjectsList )
1393
+ foreach ( var sobj in SpawnManager . SpawnedObjectsList )
1384
1394
{
1385
1395
sobj . Observers . Remove ( clientId ) ;
1386
1396
}
@@ -1446,15 +1456,15 @@ internal void HandleApproval(ulong ownerClientId, bool createPlayerObject, ulong
1446
1456
1447
1457
if ( createPlayerObject )
1448
1458
{
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 ) ;
1459
+ var networkObject = SpawnManager . CreateLocalNetworkObject ( false , 0 , playerPrefabHash ?? NetworkConfig . PlayerPrefabHash . Value , ownerClientId , null , position , rotation ) ;
1460
+ SpawnManager . SpawnNetworkObjectLocally ( networkObject , SpawnManager . GetNetworkObjectId ( ) , false , true , ownerClientId , null , false , 0 , false , false ) ;
1451
1461
1452
1462
ConnectedClients [ ownerClientId ] . PlayerObject = networkObject ;
1453
1463
}
1454
1464
1455
1465
m_ObservedObjects . Clear ( ) ;
1456
1466
1457
- foreach ( var sobj in NetworkSpawnManager . SpawnedObjectsList )
1467
+ foreach ( var sobj in SpawnManager . SpawnedObjectsList )
1458
1468
{
1459
1469
if ( ownerClientId == ServerClientId || sobj . CheckObjectVisibility == null || sobj . CheckObjectVisibility ( ownerClientId ) )
1460
1470
{
0 commit comments