mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-18 11:00:32 +00:00
NetworkServer: broadcast to connection code moved into BroadcastToConnection
This commit is contained in:
parent
7af1156d4a
commit
2085cd387f
@ -1438,45 +1438,8 @@ static Serialization GetEntitySerialization(NetworkIdentity identity)
|
|||||||
return serializations[identity];
|
return serializations[identity];
|
||||||
}
|
}
|
||||||
|
|
||||||
// NetworkLateUpdate called after any Update/FixedUpdate/LateUpdate
|
// helper function to broadcast the world to a connection
|
||||||
// (we add this to the UnityEngine in NetworkLoop)
|
static void BroadcastToConnection(NetworkConnectionToClient connection)
|
||||||
static readonly List<NetworkConnectionToClient> connectionsCopy =
|
|
||||||
new List<NetworkConnectionToClient>();
|
|
||||||
|
|
||||||
internal static void NetworkLateUpdate()
|
|
||||||
{
|
|
||||||
// only process spawned & connections if active
|
|
||||||
if (active)
|
|
||||||
{
|
|
||||||
// copy all connections into a helper collection so that
|
|
||||||
// OnTransportDisconnected can be called while iterating.
|
|
||||||
// -> OnTransportDisconnected removes from the collection
|
|
||||||
// -> which would throw 'can't modify while iterating' errors
|
|
||||||
// => see also: https://github.com/vis2k/Mirror/issues/2739
|
|
||||||
// (copy nonalloc)
|
|
||||||
// TODO remove this when we move to 'lite' transports with only
|
|
||||||
// socket send/recv later.
|
|
||||||
connectionsCopy.Clear();
|
|
||||||
connections.Values.CopyTo(connectionsCopy);
|
|
||||||
|
|
||||||
// go through all connections
|
|
||||||
foreach (NetworkConnectionToClient connection in connectionsCopy)
|
|
||||||
{
|
|
||||||
// check for inactivity
|
|
||||||
#pragma warning disable 618
|
|
||||||
if (disconnectInactiveConnections &&
|
|
||||||
!connection.IsAlive(disconnectInactiveTimeout))
|
|
||||||
{
|
|
||||||
Debug.LogWarning($"Disconnecting {connection} for inactivity!");
|
|
||||||
connection.Disconnect();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
#pragma warning restore 618
|
|
||||||
|
|
||||||
// has this connection joined the world yet?
|
|
||||||
// for each READY connection:
|
|
||||||
// pull in UpdateVarsMessage for each entity it observes
|
|
||||||
if (connection.isReady)
|
|
||||||
{
|
{
|
||||||
// for each entity that this connection is seeing
|
// for each entity that this connection is seeing
|
||||||
foreach (NetworkIdentity identity in connection.observing)
|
foreach (NetworkIdentity identity in connection.observing)
|
||||||
@ -1531,6 +1494,50 @@ internal static void NetworkLateUpdate()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NetworkLateUpdate called after any Update/FixedUpdate/LateUpdate
|
||||||
|
// (we add this to the UnityEngine in NetworkLoop)
|
||||||
|
static readonly List<NetworkConnectionToClient> connectionsCopy =
|
||||||
|
new List<NetworkConnectionToClient>();
|
||||||
|
|
||||||
|
internal static void NetworkLateUpdate()
|
||||||
|
{
|
||||||
|
// only process spawned & connections if active
|
||||||
|
if (active)
|
||||||
|
{
|
||||||
|
// copy all connections into a helper collection so that
|
||||||
|
// OnTransportDisconnected can be called while iterating.
|
||||||
|
// -> OnTransportDisconnected removes from the collection
|
||||||
|
// -> which would throw 'can't modify while iterating' errors
|
||||||
|
// => see also: https://github.com/vis2k/Mirror/issues/2739
|
||||||
|
// (copy nonalloc)
|
||||||
|
// TODO remove this when we move to 'lite' transports with only
|
||||||
|
// socket send/recv later.
|
||||||
|
connectionsCopy.Clear();
|
||||||
|
connections.Values.CopyTo(connectionsCopy);
|
||||||
|
|
||||||
|
// go through all connections
|
||||||
|
foreach (NetworkConnectionToClient connection in connectionsCopy)
|
||||||
|
{
|
||||||
|
// check for inactivity
|
||||||
|
#pragma warning disable 618
|
||||||
|
if (disconnectInactiveConnections &&
|
||||||
|
!connection.IsAlive(disconnectInactiveTimeout))
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"Disconnecting {connection} for inactivity!");
|
||||||
|
connection.Disconnect();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
#pragma warning restore 618
|
||||||
|
|
||||||
|
// has this connection joined the world yet?
|
||||||
|
// for each READY connection:
|
||||||
|
// pull in UpdateVarsMessage for each entity it observes
|
||||||
|
if (connection.isReady)
|
||||||
|
{
|
||||||
|
// broadcast world state to this connection
|
||||||
|
BroadcastToConnection(connection);
|
||||||
|
}
|
||||||
|
|
||||||
// update connection to flush out batched messages
|
// update connection to flush out batched messages
|
||||||
connection.Update();
|
connection.Update();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user