mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-17 18:40:33 +00:00
Compare commits
3 Commits
32d0796052
...
777b2a9822
Author | SHA1 | Date | |
---|---|---|---|
|
777b2a9822 | ||
|
451c297a43 | ||
|
3df73ea9f1 |
@ -367,7 +367,7 @@ protected virtual void OnClientToServerDeltaSync(byte baselineTick, Vector3 posi
|
|||||||
bufferSizeLimit,
|
bufferSizeLimit,
|
||||||
new TransformSnapshot(
|
new TransformSnapshot(
|
||||||
timestamp, // arrival remote timestamp. NOT remote time.
|
timestamp, // arrival remote timestamp. NOT remote time.
|
||||||
Time.timeAsDouble,
|
NetworkTime.localTime, // Unity 2019 doesn't have Time.timeAsDouble yet
|
||||||
position,
|
position,
|
||||||
rotation,
|
rotation,
|
||||||
scale
|
scale
|
||||||
@ -710,8 +710,8 @@ protected virtual void OnServerToClientDeltaSync(byte baselineTick, Vector3 posi
|
|||||||
clientSnapshots,
|
clientSnapshots,
|
||||||
bufferSizeLimit,
|
bufferSizeLimit,
|
||||||
new TransformSnapshot(
|
new TransformSnapshot(
|
||||||
timestamp, // arrival remote timestamp. NOT remote time.
|
timestamp, // arrival remote timestamp. NOT remote time.
|
||||||
Time.timeAsDouble,
|
NetworkTime.localTime, // Unity 2019 doesn't have Time.timeAsDouble yet
|
||||||
position,
|
position,
|
||||||
rotation,
|
rotation,
|
||||||
scale
|
scale
|
@ -3,6 +3,7 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Mirror.RemoteCalls;
|
using Mirror.RemoteCalls;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using UnityEngine.Profiling;
|
||||||
|
|
||||||
namespace Mirror
|
namespace Mirror
|
||||||
{
|
{
|
||||||
@ -1500,8 +1501,11 @@ internal static void ChangeOwner(NetworkIdentity identity, ChangeOwnerMessage me
|
|||||||
internal static void NetworkEarlyUpdate()
|
internal static void NetworkEarlyUpdate()
|
||||||
{
|
{
|
||||||
// process all incoming messages first before updating the world
|
// process all incoming messages first before updating the world
|
||||||
|
// profiling marker for shallow profiling to show more than "UpdateFunction.Invoke
|
||||||
|
Profiler.BeginSample("NetworkClient: Transport Processing");
|
||||||
if (Transport.active != null)
|
if (Transport.active != null)
|
||||||
Transport.active.ClientEarlyUpdate();
|
Transport.active.ClientEarlyUpdate();
|
||||||
|
Profiler.EndSample();
|
||||||
|
|
||||||
// time snapshot interpolation
|
// time snapshot interpolation
|
||||||
UpdateTimeInterpolation();
|
UpdateTimeInterpolation();
|
||||||
@ -1532,7 +1536,10 @@ internal static void NetworkLateUpdate()
|
|||||||
bool sendIntervalElapsed = AccurateInterval.Elapsed(NetworkTime.localTime, sendInterval, ref lastSendTime);
|
bool sendIntervalElapsed = AccurateInterval.Elapsed(NetworkTime.localTime, sendInterval, ref lastSendTime);
|
||||||
if (!Application.isPlaying || sendIntervalElapsed)
|
if (!Application.isPlaying || sendIntervalElapsed)
|
||||||
{
|
{
|
||||||
|
// profiling marker for shallow profiling to show more than "UpdateFunction.Invoke
|
||||||
|
Profiler.BeginSample("NetworkClient: Broadcast");
|
||||||
Broadcast();
|
Broadcast();
|
||||||
|
Profiler.EndSample();
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateConnectionQuality();
|
UpdateConnectionQuality();
|
||||||
@ -1589,8 +1596,11 @@ void UpdateConnectionQuality()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// process all outgoing messages after updating the world
|
// process all outgoing messages after updating the world
|
||||||
|
// profiling marker for shallow profiling to show more than "UpdateFunction.Invoke
|
||||||
|
Profiler.BeginSample("NetworkClient: Transport Flush");
|
||||||
if (Transport.active != null)
|
if (Transport.active != null)
|
||||||
Transport.active.ClientLateUpdate();
|
Transport.active.ClientLateUpdate();
|
||||||
|
Profiler.EndSample();
|
||||||
}
|
}
|
||||||
|
|
||||||
// broadcast ///////////////////////////////////////////////////////////
|
// broadcast ///////////////////////////////////////////////////////////
|
||||||
@ -1628,7 +1638,11 @@ static void BroadcastToServer()
|
|||||||
{
|
{
|
||||||
// get serialization for this entity viewed by this connection
|
// get serialization for this entity viewed by this connection
|
||||||
// (if anything was serialized this time)
|
// (if anything was serialized this time)
|
||||||
|
// profiling marker for shallow profiling to show more than "UpdateFunction.Invoke
|
||||||
|
Profiler.BeginSample("BroadcastToServer: SerializeClient");
|
||||||
identity.SerializeClient(writer);
|
identity.SerializeClient(writer);
|
||||||
|
Profiler.EndSample();
|
||||||
|
|
||||||
if (writer.Position > 0)
|
if (writer.Position > 0)
|
||||||
{
|
{
|
||||||
// send state update message
|
// send state update message
|
||||||
@ -1637,7 +1651,11 @@ static void BroadcastToServer()
|
|||||||
netId = identity.netId,
|
netId = identity.netId,
|
||||||
payload = writer.ToArraySegment()
|
payload = writer.ToArraySegment()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// profiling marker for shallow profiling to show more than "UpdateFunction.Invoke
|
||||||
|
Profiler.BeginSample("BroadcastToServer: Flush");
|
||||||
Send(message);
|
Send(message);
|
||||||
|
Profiler.EndSample();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.LowLevel;
|
using UnityEngine.LowLevel;
|
||||||
using UnityEngine.PlayerLoop;
|
using UnityEngine.PlayerLoop;
|
||||||
|
using UnityEngine.Profiling;
|
||||||
|
|
||||||
namespace Mirror
|
namespace Mirror
|
||||||
{
|
{
|
||||||
@ -187,12 +188,17 @@ static void NetworkEarlyUpdate()
|
|||||||
// however, we only want to call NetworkServer/Client in play mode.
|
// however, we only want to call NetworkServer/Client in play mode.
|
||||||
if (!Application.isPlaying) return;
|
if (!Application.isPlaying) return;
|
||||||
|
|
||||||
|
// profiling marker for shallow profiling to show more than "UpdateFunction.Invoke"
|
||||||
|
Profiler.BeginSample("NetworkEarlyUpdate");
|
||||||
|
|
||||||
NetworkTime.EarlyUpdate();
|
NetworkTime.EarlyUpdate();
|
||||||
//Debug.Log($"NetworkEarlyUpdate {Time.time}");
|
//Debug.Log($"NetworkEarlyUpdate {Time.time}");
|
||||||
NetworkServer.NetworkEarlyUpdate();
|
NetworkServer.NetworkEarlyUpdate();
|
||||||
NetworkClient.NetworkEarlyUpdate();
|
NetworkClient.NetworkEarlyUpdate();
|
||||||
// invoke event after mirror has done it's early updating.
|
// invoke event after mirror has done it's early updating.
|
||||||
OnEarlyUpdate?.Invoke();
|
OnEarlyUpdate?.Invoke();
|
||||||
|
|
||||||
|
Profiler.EndSample();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void NetworkLateUpdate()
|
static void NetworkLateUpdate()
|
||||||
@ -201,11 +207,16 @@ static void NetworkLateUpdate()
|
|||||||
// however, we only want to call NetworkServer/Client in play mode.
|
// however, we only want to call NetworkServer/Client in play mode.
|
||||||
if (!Application.isPlaying) return;
|
if (!Application.isPlaying) return;
|
||||||
|
|
||||||
|
// profiling marker for shallow profiling to show more than "UpdateFunction.Invoke"
|
||||||
|
Profiler.BeginSample("NetworkLateUpdate");
|
||||||
|
|
||||||
//Debug.Log($"NetworkLateUpdate {Time.time}");
|
//Debug.Log($"NetworkLateUpdate {Time.time}");
|
||||||
// invoke event before mirror does its final late updating.
|
// invoke event before mirror does its final late updating.
|
||||||
OnLateUpdate?.Invoke();
|
OnLateUpdate?.Invoke();
|
||||||
NetworkServer.NetworkLateUpdate();
|
NetworkServer.NetworkLateUpdate();
|
||||||
NetworkClient.NetworkLateUpdate();
|
NetworkClient.NetworkLateUpdate();
|
||||||
|
|
||||||
|
Profiler.EndSample();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Mirror.RemoteCalls;
|
using Mirror.RemoteCalls;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using UnityEngine.Profiling;
|
||||||
|
|
||||||
namespace Mirror
|
namespace Mirror
|
||||||
{
|
{
|
||||||
@ -1928,7 +1929,11 @@ static void BroadcastToConnection(NetworkConnectionToClient connection)
|
|||||||
{
|
{
|
||||||
// get serialization for this entity viewed by this connection
|
// get serialization for this entity viewed by this connection
|
||||||
// (if anything was serialized this time)
|
// (if anything was serialized this time)
|
||||||
|
// profiling marker for shallow profiling to show more than "UpdateFunction.Invoke
|
||||||
|
Profiler.BeginSample("BroadcastToConnection: SerializeForConnection");
|
||||||
NetworkWriter serialization = SerializeForConnection(identity, connection);
|
NetworkWriter serialization = SerializeForConnection(identity, connection);
|
||||||
|
Profiler.EndSample();
|
||||||
|
|
||||||
if (serialization != null)
|
if (serialization != null)
|
||||||
{
|
{
|
||||||
EntityStateMessage message = new EntityStateMessage
|
EntityStateMessage message = new EntityStateMessage
|
||||||
@ -1936,7 +1941,11 @@ static void BroadcastToConnection(NetworkConnectionToClient connection)
|
|||||||
netId = identity.netId,
|
netId = identity.netId,
|
||||||
payload = serialization.ToArraySegment()
|
payload = serialization.ToArraySegment()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// profiling marker for shallow profiling to show more than "UpdateFunction.Invoke
|
||||||
|
Profiler.BeginSample("BroadcastToConnection: Send");
|
||||||
connection.Send(message);
|
connection.Send(message);
|
||||||
|
Profiler.EndSample();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// spawned list should have no null entries because we
|
// spawned list should have no null entries because we
|
||||||
@ -2017,7 +2026,10 @@ static void Broadcast()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// update connection to flush out batched messages
|
// update connection to flush out batched messages
|
||||||
|
// profiling marker for shallow profiling to show more than "UpdateFunction.Invoke
|
||||||
|
Profiler.BeginSample("Broadcast: Flush");
|
||||||
connection.Update();
|
connection.Update();
|
||||||
|
Profiler.EndSample();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2034,12 +2046,19 @@ internal static void NetworkEarlyUpdate()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// process all incoming messages first before updating the world
|
// process all incoming messages first before updating the world
|
||||||
|
// profiling marker for shallow profiling to show more than "UpdateFunction.Invoke
|
||||||
|
Profiler.BeginSample("NetworkServer: Transport Processing");
|
||||||
if (Transport.active != null)
|
if (Transport.active != null)
|
||||||
Transport.active.ServerEarlyUpdate();
|
Transport.active.ServerEarlyUpdate();
|
||||||
|
Profiler.EndSample();
|
||||||
|
|
||||||
|
|
||||||
// step each connection's local time interpolation in early update.
|
// step each connection's local time interpolation in early update.
|
||||||
|
// profiling marker for shallow profiling to show more than "UpdateFunction.Invoke
|
||||||
|
Profiler.BeginSample("NetworkServer: Connections Time Update");
|
||||||
foreach (NetworkConnectionToClient connection in connections.Values)
|
foreach (NetworkConnectionToClient connection in connections.Values)
|
||||||
connection.UpdateTimeInterpolation();
|
connection.UpdateTimeInterpolation();
|
||||||
|
Profiler.EndSample();
|
||||||
|
|
||||||
if (active) earlyUpdateDuration.End();
|
if (active) earlyUpdateDuration.End();
|
||||||
}
|
}
|
||||||
@ -2068,13 +2087,21 @@ internal static void NetworkLateUpdate()
|
|||||||
// Unity 2019 doesn't have Time.timeAsDouble yet
|
// Unity 2019 doesn't have Time.timeAsDouble yet
|
||||||
bool sendIntervalElapsed = AccurateInterval.Elapsed(NetworkTime.localTime, sendInterval, ref lastSendTime);
|
bool sendIntervalElapsed = AccurateInterval.Elapsed(NetworkTime.localTime, sendInterval, ref lastSendTime);
|
||||||
if (!Application.isPlaying || sendIntervalElapsed)
|
if (!Application.isPlaying || sendIntervalElapsed)
|
||||||
|
{
|
||||||
|
// profiling marker for shallow profiling to show more than "UpdateFunction.Invoke
|
||||||
|
Profiler.BeginSample("NetworkServer: Broadcast");
|
||||||
Broadcast();
|
Broadcast();
|
||||||
|
Profiler.EndSample();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// process all outgoing messages after updating the world
|
// process all outgoing messages after updating the world
|
||||||
// (even if not active. still want to process disconnects etc.)
|
// (even if not active. still want to process disconnects etc.)
|
||||||
|
// profiling marker for shallow profiling to show more than "UpdateFunction.Invoke
|
||||||
|
Profiler.BeginSample("NetworkServer: Transport Flush");
|
||||||
if (Transport.active != null)
|
if (Transport.active != null)
|
||||||
Transport.active.ServerLateUpdate();
|
Transport.active.ServerLateUpdate();
|
||||||
|
Profiler.EndSample();
|
||||||
|
|
||||||
// measure actual tick rate every second.
|
// measure actual tick rate every second.
|
||||||
if (active)
|
if (active)
|
||||||
|
Loading…
Reference in New Issue
Block a user