Skip to content

Conversation

TwoTenPvP
Copy link
Contributor

BREAKING CHANGE: SpawnManager is no longer static. Access it with NetworkManager.Singleton.SpawnManager

BREAKING CHANGE: SpawnManager is no longer static. Access it with NetworkManager.Singleton.SpawnManager
@TwoTenPvP
Copy link
Contributor Author

First step towards singleton removal. Makes the SpawnManager instance based.

{
var client = NetworkManager.Singleton.ConnectedClientsList[i];
var spawnedObjs = NetworkSpawnManager.SpawnedObjectsList;
var spawnedObjs = NetworkManager.Singleton.SpawnManager.SpawnedObjectsList;
Copy link
Contributor

@0xFA11 0xFA11 Apr 1, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var spawnedObjs = NetworkManager.Singleton.SpawnManager.SpawnedObjectsList;
var spawnedNetworkObjects = NetworkManager.SpawnManager.SpawnedObjectsList;

Copy link
Contributor

@mattwalsh-unity mattwalsh-unity Apr 2, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree and disagree, but mostly disagree. The name change is maybe valid (though having small insignificant names for insignificant variables and vice versa is a style choice I actually prefer), but there's also the "when in Rome" principal where we want to make the PR as focused on the actual change at hand, not mix in some minor unrelated style edits to keep the signal / noise ratio high.

Copy link
Contributor

@0xFA11 0xFA11 Apr 2, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand why you'd consider this change in a separate PR.

we're changing it from:

NetworkSpawnManager.SpawnedObjectsList

to

NetworkManager.Singleton.SpawnManager.SpawnedObjectsList

already.

my only suggestion here is to kill .Singleton part as well

NetworkManager.SpawnManager.SpawnedObjectsList

because there is already NetworkBehaviour.NetworkManager property available, so there is no need to access NetworkManager over NetworkManager.Singleton instead of NetworkBehaviour.NetworkManager.

I do not think it should go under a separate PR — we are making a change there already, let's make it even better.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will come in my next PR!
That's where I will convert the whole NetworkObject & Behaviour.

{
// when client updates the sever, it tells it about all its objects
foreach (var sobj in NetworkSpawnManager.SpawnedObjectsList)
foreach (var sobj in NetworkManager.Singleton.SpawnManager.SpawnedObjectsList)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
foreach (var sobj in NetworkManager.Singleton.SpawnManager.SpawnedObjectsList)
var spawnedNetworkObjects = NetworkManager.SpawnManager.SpawnedObjectsList;
foreach (var networkObject in spawnedNetworkObjects)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto as above, actually making the induction variable longer doesn't to me improve readability


// Now, reset all the no-longer-dirty variables
foreach (var sobj in NetworkSpawnManager.SpawnedObjectsList)
foreach (var sobj in NetworkManager.Singleton.SpawnManager.SpawnedObjectsList)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
foreach (var sobj in NetworkManager.Singleton.SpawnManager.SpawnedObjectsList)
foreach (var networkObject in spawnedNetworkObjects)

/// <param name="networkId"></param>
/// <returns></returns>
protected NetworkObject GetNetworkObject(ulong networkId) => NetworkSpawnManager.SpawnedObjects.ContainsKey(networkId) ? NetworkSpawnManager.SpawnedObjects[networkId] : null;
protected NetworkObject GetNetworkObject(ulong networkId) => NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkId) ? NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkId] : null;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
protected NetworkObject GetNetworkObject(ulong networkId) => NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkId) ? NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkId] : null;
protected NetworkObject GetNetworkObject(ulong networkObjectId) => NetworkManager.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId) ? NetworkManager.SpawnManager.SpawnedObjects[networkObjectId] : null;

// TODO: Could(should?) be replaced with more memory per client, by storing the visiblity

foreach (var sobj in NetworkSpawnManager.SpawnedObjectsList)
foreach (var sobj in SpawnManager.SpawnedObjectsList)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
foreach (var sobj in SpawnManager.SpawnedObjectsList)
foreach (var networkObject in SpawnManager.SpawnedObjectsList)

m_ObservedObjects.Clear();

foreach (var sobj in NetworkSpawnManager.SpawnedObjectsList)
foreach (var sobj in SpawnManager.SpawnedObjectsList)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
foreach (var sobj in SpawnManager.SpawnedObjectsList)
foreach (var networkObject in SpawnManager.SpawnedObjectsList)

Observers.Add(clientId);

NetworkSpawnManager.SendSpawnCallForObject(clientId, this, payload);
NetworkManager.Singleton.SpawnManager.SendSpawnCallForObject(clientId, this, payload);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.SendSpawnCallForObject(clientId, this, payload);
NetworkManager.SpawnManager.SendSpawnCallForObject(clientId, this, payload);

networkObjects[i].Observers.Add(clientId);

NetworkSpawnManager.WriteSpawnCallForObject(buffer, clientId, networkObjects[i], payload);
NetworkManager.Singleton.SpawnManager.WriteSpawnCallForObject(buffer, clientId, networkObjects[i], payload);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.WriteSpawnCallForObject(buffer, clientId, networkObjects[i], payload);
NetworkManager.SpawnManager.WriteSpawnCallForObject(buffer, clientId, networkObjects[i], payload);

private void OnDestroy()
{
if (NetworkManager.Singleton != null && NetworkSpawnManager.SpawnedObjects.ContainsKey(NetworkObjectId))
if (NetworkManager.Singleton != null && NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(NetworkObjectId))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if (NetworkManager.Singleton != null && NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(NetworkObjectId))
if (NetworkManager.Singleton != null && NetworkManager.SpawnManager.SpawnedObjects.ContainsKey(NetworkObjectId))

if (NetworkManager.Singleton != null && NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(NetworkObjectId))
{
NetworkSpawnManager.OnDestroyObject(NetworkObjectId, false);
NetworkManager.Singleton.SpawnManager.OnDestroyObject(NetworkObjectId, false);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.OnDestroyObject(NetworkObjectId, false);
NetworkManager.SpawnManager.OnDestroyObject(NetworkObjectId, false);

}

NetworkSpawnManager.SpawnNetworkObjectLocally(this, NetworkSpawnManager.GetNetworkObjectId(), false, playerObject, ownerClientId, spawnPayload, spawnPayload != null, spawnPayload == null ? 0 : (int)spawnPayload.Length, false, destroyWithScene);
NetworkManager.Singleton.SpawnManager.SpawnNetworkObjectLocally(this, NetworkManager.Singleton.SpawnManager.GetNetworkObjectId(), false, playerObject, ownerClientId, spawnPayload, spawnPayload != null, spawnPayload == null ? 0 : (int)spawnPayload.Length, false, destroyWithScene);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.SpawnNetworkObjectLocally(this, NetworkManager.Singleton.SpawnManager.GetNetworkObjectId(), false, playerObject, ownerClientId, spawnPayload, spawnPayload != null, spawnPayload == null ? 0 : (int)spawnPayload.Length, false, destroyWithScene);
NetworkManager.SpawnManager.SpawnNetworkObjectLocally(this, NetworkManager.SpawnManager.GetNetworkObjectId(), false, playerObject, ownerClientId, spawnPayload, spawnPayload != null, spawnPayload == null ? 0 : (int)spawnPayload.Length, false, destroyWithScene);

if (Observers.Contains(NetworkManager.Singleton.ConnectedClientsList[i].ClientId))
{
NetworkSpawnManager.SendSpawnCallForObject(NetworkManager.Singleton.ConnectedClientsList[i].ClientId, this, spawnPayload);
NetworkManager.Singleton.SpawnManager.SendSpawnCallForObject(NetworkManager.Singleton.ConnectedClientsList[i].ClientId, this, spawnPayload);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.SendSpawnCallForObject(NetworkManager.Singleton.ConnectedClientsList[i].ClientId, this, spawnPayload);
NetworkManager.SpawnManager.SendSpawnCallForObject(NetworkManager.Singleton.ConnectedClientsList[i].ClientId, this, spawnPayload);

public void Despawn(bool destroy = false)
{
NetworkSpawnManager.DespawnObject(this, destroy);
NetworkManager.Singleton.SpawnManager.DespawnObject(this, destroy);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.DespawnObject(this, destroy);
NetworkManager.SpawnManager.DespawnObject(this, destroy);

public void RemoveOwnership()
{
NetworkSpawnManager.RemoveOwnership(this);
NetworkManager.Singleton.SpawnManager.RemoveOwnership(this);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.RemoveOwnership(this);
NetworkManager.SpawnManager.RemoveOwnership(this);

public void ChangeOwnership(ulong newOwnerClientId)
{
NetworkSpawnManager.ChangeOwnership(this, newOwnerClientId);
NetworkManager.Singleton.SpawnManager.ChangeOwnership(this, newOwnerClientId);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.ChangeOwnership(this, newOwnerClientId);
NetworkManager.SpawnManager.ChangeOwnership(this, newOwnerClientId);

if (!NetworkManager.Singleton.NetworkConfig.EnableSceneManagement || NetworkManager.Singleton.NetworkConfig.UsePrefabSync)
{
NetworkSpawnManager.DestroySceneObjects();
NetworkManager.Singleton.SpawnManager.DestroySceneObjects();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.DestroySceneObjects();
NetworkManager.SpawnManager.DestroySceneObjects();

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Come again?

else
{
NetworkSpawnManager.ClientCollectSoftSyncSceneObjectSweep(null);
NetworkManager.Singleton.SpawnManager.ClientCollectSoftSyncSceneObjectSweep(null);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.ClientCollectSoftSyncSceneObjectSweep(null);
NetworkManager.SpawnManager.ClientCollectSoftSyncSceneObjectSweep(null);

Comment on lines +169 to +170
var networkObject = NetworkManager.Singleton.SpawnManager.CreateLocalNetworkObject(softSync, instanceId, prefabHash, ownerId, parentNetworkId, pos, rot);
NetworkManager.Singleton.SpawnManager.SpawnNetworkObjectLocally(networkObject, networkId, softSync, isPlayerObject, ownerId, continuationStream, false, 0, true, false);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var networkObject = NetworkManager.Singleton.SpawnManager.CreateLocalNetworkObject(softSync, instanceId, prefabHash, ownerId, parentNetworkId, pos, rot);
NetworkManager.Singleton.SpawnManager.SpawnNetworkObjectLocally(networkObject, networkId, softSync, isPlayerObject, ownerId, continuationStream, false, 0, true, false);
var networkObject = NetworkManager.SpawnManager.CreateLocalNetworkObject(softSync, instanceId, prefabHash, ownerId, parentNetworkId, pos, rot);
NetworkManager.SpawnManager.SpawnNetworkObjectLocally(networkObject, networkId, softSync, isPlayerObject, ownerId, continuationStream, false, 0, true, false);

Comment on lines +186 to 188
NetworkManager.Singleton.SpawnManager.CleanDiffedSceneObjects();
NetworkManager.Singleton.IsConnectedClient = true;
NetworkManager.Singleton.InvokeOnClientConnectedCallback(NetworkManager.Singleton.LocalClientId);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.CleanDiffedSceneObjects();
NetworkManager.Singleton.IsConnectedClient = true;
NetworkManager.Singleton.InvokeOnClientConnectedCallback(NetworkManager.Singleton.LocalClientId);
NetworkManager.SpawnManager.CleanDiffedSceneObjects();
NetworkManager.IsConnectedClient = true;
NetworkManager.InvokeOnClientConnectedCallback(NetworkManager.Singleton.LocalClientId);

Comment on lines +276 to +277
var networkObject = NetworkManager.Singleton.SpawnManager.CreateLocalNetworkObject(softSync, instanceId, prefabHash, ownerClientId, parentNetworkId, pos, rot);
NetworkManager.Singleton.SpawnManager.SpawnNetworkObjectLocally(networkObject, networkId, softSync, isPlayerObject, ownerClientId, stream, hasPayload, payLoadLength, true, false);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var networkObject = NetworkManager.Singleton.SpawnManager.CreateLocalNetworkObject(softSync, instanceId, prefabHash, ownerClientId, parentNetworkId, pos, rot);
NetworkManager.Singleton.SpawnManager.SpawnNetworkObjectLocally(networkObject, networkId, softSync, isPlayerObject, ownerClientId, stream, hasPayload, payLoadLength, true, false);
var networkObject = NetworkManager.SpawnManager.CreateLocalNetworkObject(softSync, instanceId, prefabHash, ownerClientId, parentNetworkId, pos, rot);
NetworkManager.SpawnManager.SpawnNetworkObjectLocally(networkObject, networkId, softSync, isPlayerObject, ownerClientId, stream, hasPayload, payLoadLength, true, false);

{
ulong networkId = reader.ReadUInt64Packed();
NetworkSpawnManager.OnDestroyObject(networkId, true);
NetworkManager.Singleton.SpawnManager.OnDestroyObject(networkId, true);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.OnDestroyObject(networkId, true);
NetworkManager.SpawnManager.OnDestroyObject(networkObjectId, true);

ulong ownerClientId = reader.ReadUInt64Packed();

if (NetworkSpawnManager.SpawnedObjects[networkId].OwnerClientId == NetworkManager.Singleton.LocalClientId)
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkId].OwnerClientId == NetworkManager.Singleton.LocalClientId)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkId].OwnerClientId == NetworkManager.Singleton.LocalClientId)
if (NetworkManager.SpawnManager.SpawnedObjects[networkObjectId].OwnerClientId == NetworkManager.LocalClientId)

{
//We are current owner.
NetworkSpawnManager.SpawnedObjects[networkId].InvokeBehaviourOnLostOwnership();
NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkId].InvokeBehaviourOnLostOwnership();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkId].InvokeBehaviourOnLostOwnership();
NetworkManager.SpawnManager.SpawnedObjects[networkObjectId].InvokeBehaviourOnLostOwnership();

{
//We are new owner.
NetworkSpawnManager.SpawnedObjects[networkId].InvokeBehaviourOnGainedOwnership();
NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkId].InvokeBehaviourOnGainedOwnership();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkId].InvokeBehaviourOnGainedOwnership();
NetworkManager.SpawnManager.SpawnedObjects[networkObjectId].InvokeBehaviourOnGainedOwnership();

}

NetworkSpawnManager.SpawnedObjects[networkId].OwnerClientId = ownerClientId;
NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkId].OwnerClientId = ownerClientId;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkId].OwnerClientId = ownerClientId;
NetworkManager.SpawnManager.SpawnedObjects[networkObjectId].OwnerClientId = ownerClientId;

ushort networkBehaviourIndex = reader.ReadUInt16Packed();

if (NetworkSpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
if (NetworkManager.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))

if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
{
NetworkBehaviour instance = NetworkSpawnManager.SpawnedObjects[networkObjectId].GetNetworkBehaviourAtOrderIndex(networkBehaviourIndex);
NetworkBehaviour instance = NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkObjectId].GetNetworkBehaviourAtOrderIndex(networkBehaviourIndex);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkBehaviour instance = NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkObjectId].GetNetworkBehaviourAtOrderIndex(networkBehaviourIndex);
var networkBehaviour = NetworkManager.SpawnManager.SpawnedObjects[networkObjectId].GetNetworkBehaviourAtOrderIndex(networkBehaviourIndex);

ushort networkBehaviourIndex = reader.ReadUInt16Packed();

if (NetworkSpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
if (NetworkManager.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))

if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
{
var networkBehaviour = NetworkSpawnManager.SpawnedObjects[networkObjectId].GetNetworkBehaviourAtOrderIndex(networkBehaviourIndex);
var networkBehaviour = NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkObjectId].GetNetworkBehaviourAtOrderIndex(networkBehaviourIndex);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var networkBehaviour = NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkObjectId].GetNetworkBehaviourAtOrderIndex(networkBehaviourIndex);
var networkBehaviour = NetworkManager.SpawnManager.SpawnedObjects[networkObjectId].GetNetworkBehaviourAtOrderIndex(networkBehaviourIndex);

if (!isTesting)
{
NetworkManager.InvokeRpc(currentQueueItem);
NetworkManager.Singleton.InvokeRpc(currentQueueItem);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.InvokeRpc(currentQueueItem);
NetworkManager.InvokeRpc(currentQueueItem);

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still not following how this would be valid

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NetworkManager.InvokeRpc is a static function.

}

NetworkSpawnManager.ServerDestroySpawnedSceneObjects(); //Destroy current scene objects before switching.
NetworkManager.Singleton.SpawnManager.ServerDestroySpawnedSceneObjects(); //Destroy current scene objects before switching.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.ServerDestroySpawnedSceneObjects(); //Destroy current scene objects before switching.
NetworkManager.SpawnManager.ServerDestroySpawnedSceneObjects(); //Destroy current scene objects before switching.

if (networkObjects[i].IsSceneObject == null)
{
NetworkSpawnManager.SpawnNetworkObjectLocally(networkObjects[i], NetworkSpawnManager.GetNetworkObjectId(), true, false, null, null, false, 0, false, true);
NetworkManager.Singleton.SpawnManager.SpawnNetworkObjectLocally(networkObjects[i], NetworkManager.Singleton.SpawnManager.GetNetworkObjectId(), true, false, null, null, false, 0, false, true);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.SpawnNetworkObjectLocally(networkObjects[i], NetworkManager.Singleton.SpawnManager.GetNetworkObjectId(), true, false, null, null, false, 0, false, true);
NetworkManager.SpawnManager.SpawnNetworkObjectLocally(networkObjects[i], NetworkManager.SpawnManager.GetNetworkObjectId(), true, false, null, null, false, 0, false, true);

if (!NetworkManager.Singleton.NetworkConfig.EnableSceneManagement || NetworkManager.Singleton.NetworkConfig.UsePrefabSync)
{
NetworkSpawnManager.DestroySceneObjects();
NetworkManager.Singleton.SpawnManager.DestroySceneObjects();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.DestroySceneObjects();
NetworkManager.SpawnManager.DestroySceneObjects();

Comment on lines +369 to +370
var networkObject = NetworkManager.Singleton.SpawnManager.CreateLocalNetworkObject(false, 0, prefabHash, ownerClientId, parentNetworkId, position, rotation);
NetworkManager.Singleton.SpawnManager.SpawnNetworkObjectLocally(networkObject, networkId, true, isPlayerObject, ownerClientId, objectStream, false, 0, true, false);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var networkObject = NetworkManager.Singleton.SpawnManager.CreateLocalNetworkObject(false, 0, prefabHash, ownerClientId, parentNetworkId, position, rotation);
NetworkManager.Singleton.SpawnManager.SpawnNetworkObjectLocally(networkObject, networkId, true, isPlayerObject, ownerClientId, objectStream, false, 0, true, false);
var networkObject = NetworkManager.SpawnManager.CreateLocalNetworkObject(false, 0, prefabHash, ownerClientId, parentNetworkId, position, rotation);
NetworkManager.SpawnManager.SpawnNetworkObjectLocally(networkObject, networkId, true, isPlayerObject, ownerClientId, objectStream, false, 0, true, false);

{
var networkObjects = UnityEngine.Object.FindObjectsOfType<NetworkObject>();
NetworkSpawnManager.ClientCollectSoftSyncSceneObjectSweep(networkObjects);
NetworkManager.Singleton.SpawnManager.ClientCollectSoftSyncSceneObjectSweep(networkObjects);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
NetworkManager.Singleton.SpawnManager.ClientCollectSoftSyncSceneObjectSweep(networkObjects);
NetworkManager.SpawnManager.ClientCollectSoftSyncSceneObjectSweep(networkObjects);

Comment on lines +411 to +412
var networkObject = NetworkManager.Singleton.SpawnManager.CreateLocalNetworkObject(true, instanceId, 0, ownerClientId, parentNetworkId, null, null);
NetworkManager.Singleton.SpawnManager.SpawnNetworkObjectLocally(networkObject, networkId, true, isPlayerObject, ownerClientId, objectStream, false, 0, true, false);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var networkObject = NetworkManager.Singleton.SpawnManager.CreateLocalNetworkObject(true, instanceId, 0, ownerClientId, parentNetworkId, null, null);
NetworkManager.Singleton.SpawnManager.SpawnNetworkObjectLocally(networkObject, networkId, true, isPlayerObject, ownerClientId, objectStream, false, 0, true, false);
var networkObject = NetworkManager.SpawnManager.CreateLocalNetworkObject(true, instanceId, 0, ownerClientId, parentNetworkId, null, null);
NetworkManager.SpawnManager.SpawnNetworkObjectLocally(networkObject, networkId, true, isPlayerObject, ownerClientId, objectStream, false, 0, true, false);

{
// Move ALL NetworkObjects to the temp scene
var objectsToKeep = NetworkSpawnManager.SpawnedObjectsList;
var objectsToKeep = NetworkManager.Singleton.SpawnManager.SpawnedObjectsList;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var objectsToKeep = NetworkManager.Singleton.SpawnManager.SpawnedObjectsList;
var objectsToKeep = NetworkManager.SpawnManager.SpawnedObjectsList;

{
// Move ALL NetworkObjects to the temp scene
var objectsToKeep = NetworkSpawnManager.SpawnedObjectsList;
var objectsToKeep = NetworkManager.Singleton.SpawnManager.SpawnedObjectsList;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var objectsToKeep = NetworkManager.Singleton.SpawnManager.SpawnedObjectsList;
var objectsToKeep = NetworkManager.SpawnManager.SpawnedObjectsList;

ulong networkObjectId = ReadUInt64Packed();

if (NetworkSpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
if (NetworkManager.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))

if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
{
return NetworkSpawnManager.SpawnedObjects[networkObjectId].gameObject;
return NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkObjectId].gameObject;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
return NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkObjectId].gameObject;
return NetworkManager.SpawnManager.SpawnedObjects[networkObjectId].gameObject;

ulong networkObjectId = ReadUInt64Packed();

if (NetworkSpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
if (NetworkManager.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))

if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
{
return NetworkSpawnManager.SpawnedObjects[networkObjectId];
return NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkObjectId];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
return NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkObjectId];
return NetworkManager.SpawnManager.SpawnedObjects[networkObjectId];

ulong networkObjectId = ReadUInt64Packed();
ushort behaviourId = ReadUInt16Packed();
if (NetworkSpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
if (NetworkManager.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))

if (NetworkManager.Singleton.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
{
return NetworkSpawnManager.SpawnedObjects[networkObjectId].GetNetworkBehaviourAtOrderIndex(behaviourId);
return NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkObjectId].GetNetworkBehaviourAtOrderIndex(behaviourId);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
return NetworkManager.Singleton.SpawnManager.SpawnedObjects[networkObjectId].GetNetworkBehaviourAtOrderIndex(behaviourId);
return NetworkManager.SpawnManager.SpawnedObjects[networkObjectId].GetNetworkBehaviourAtOrderIndex(behaviourId);

public static NetworkManager Singleton { get; private set; }

/// <summary>
/// Gets the SpawnManager for this NetworkManager
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/// Gets the SpawnManager for this NetworkManager
/// Gets the SpawnManager associated with this NetworkManager

NetworkSpawnManager.SpawnedObjectsList.Clear();
NetworkSpawnManager.ReleasedNetworkObjectIds.Clear();
NetworkSpawnManager.PendingSoftSyncObjects.Clear();
// Create spawn manager instance
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// Create spawn manager instance

isn't it obvious already? 😛

@0xFA11
Copy link
Contributor

0xFA11 commented Apr 1, 2021

what might be nicer is to use NetworkObject's NetworkManager property instead of NetworkManager.Singleton accessor. when we get one step closer to singleton removal, we'll probably access NetworkManager of the NetworkObject via NetworkObject.NetworkManager.

but all the suggested changes are optional, they're not showstoppers.

@TwoTenPvP TwoTenPvP force-pushed the singleton-removal-spawn-manager branch from 84d35b1 to 96b9825 Compare April 6, 2021 08:26
@TwoTenPvP TwoTenPvP merged commit 9f5f39b into develop Apr 6, 2021
@TwoTenPvP TwoTenPvP deleted the singleton-removal-spawn-manager branch April 6, 2021 08:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants