aha
This commit is contained in:
63
Assets/Mirror/Core/NetworkDiagnostics.cs
Normal file
63
Assets/Mirror/Core/NetworkDiagnostics.cs
Normal file
@ -0,0 +1,63 @@
|
||||
using System;
|
||||
|
||||
namespace Mirror
|
||||
{
|
||||
/// <summary>Profiling statistics for tool to subscribe to (profiler etc.)</summary>
|
||||
public static class NetworkDiagnostics
|
||||
{
|
||||
/// <summary>Describes an outgoing message</summary>
|
||||
public readonly struct MessageInfo
|
||||
{
|
||||
/// <summary>The message being sent</summary>
|
||||
public readonly NetworkMessage message;
|
||||
/// <summary>channel through which the message was sent</summary>
|
||||
public readonly int channel;
|
||||
/// <summary>how big was the message (does not include transport headers)</summary>
|
||||
public readonly int bytes;
|
||||
/// <summary>How many connections was the message sent to.</summary>
|
||||
public readonly int count;
|
||||
|
||||
internal MessageInfo(NetworkMessage message, int channel, int bytes, int count)
|
||||
{
|
||||
this.message = message;
|
||||
this.channel = channel;
|
||||
this.bytes = bytes;
|
||||
this.count = count;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Event for when Mirror sends a message. Can be subscribed to.</summary>
|
||||
public static event Action<MessageInfo> OutMessageEvent;
|
||||
|
||||
/// <summary>Event for when Mirror receives a message. Can be subscribed to.</summary>
|
||||
public static event Action<MessageInfo> InMessageEvent;
|
||||
|
||||
// RuntimeInitializeOnLoadMethod -> fast playmode without domain reload
|
||||
[UnityEngine.RuntimeInitializeOnLoadMethod]
|
||||
static void ResetStatics()
|
||||
{
|
||||
InMessageEvent = null;
|
||||
OutMessageEvent = null;
|
||||
}
|
||||
|
||||
internal static void OnSend<T>(T message, int channel, int bytes, int count)
|
||||
where T : struct, NetworkMessage
|
||||
{
|
||||
if (count > 0 && OutMessageEvent != null)
|
||||
{
|
||||
MessageInfo outMessage = new MessageInfo(message, channel, bytes, count);
|
||||
OutMessageEvent?.Invoke(outMessage);
|
||||
}
|
||||
}
|
||||
|
||||
internal static void OnReceive<T>(T message, int channel, int bytes)
|
||||
where T : struct, NetworkMessage
|
||||
{
|
||||
if (InMessageEvent != null)
|
||||
{
|
||||
MessageInfo inMessage = new MessageInfo(message, channel, bytes, 1);
|
||||
InMessageEvent?.Invoke(inMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user