1
- using Unity . Multiplayer . NetStats . Dispatch ;
1
+ using System . Collections . Generic ;
2
+ using MLAPI . Connection ;
3
+ using Unity . Multiplayer . NetStats . Dispatch ;
2
4
using Unity . Multiplayer . NetStats . Metrics ;
3
5
using Unity . Multiplayer . NetworkProfiler ;
4
6
using Unity . Multiplayer . NetworkProfiler . Models ;
@@ -7,28 +9,40 @@ namespace MLAPI.Metrics
7
9
{
8
10
public interface INetworkMetrics
9
11
{
10
- void TrackNamedMessageSent ( string messageName , ulong bytesCount ) ;
12
+ void TrackNetworkObject ( NetworkObject networkObject ) ;
11
13
12
- void TrackNamedMessageReceived ( string messageName , ulong bytesCount ) ;
14
+ void TrackNamedMessageSent ( ulong receiver , string messageName , ulong bytesCount ) ;
15
+
16
+ void TrackNamedMessageSent ( IReadOnlyCollection < ulong > receivers , string messageName , ulong bytesCount ) ;
17
+
18
+ void TrackNamedMessageReceived ( ulong sender , string messageName , ulong bytesCount ) ;
13
19
14
20
void DispatchFrame ( ) ;
15
21
}
16
22
17
23
public class NullNetworkMetrics : INetworkMetrics
18
24
{
19
- public void TrackNamedMessageSent ( string messageName , ulong bytesCount )
25
+ public void TrackNetworkObject ( NetworkObject networkObject )
26
+ {
27
+ }
28
+
29
+ public void TrackNamedMessageSent ( ulong receiver , string messageName , ulong bytesCount )
20
30
{
21
31
}
22
32
23
- public void TrackNamedMessageReceived ( string messageName , ulong bytesCount )
33
+ public void TrackNamedMessageSent ( IReadOnlyCollection < ulong > receivers , string messageName , ulong bytesCount )
34
+ {
35
+ }
36
+
37
+ public void TrackNamedMessageReceived ( ulong sender , string messageName , ulong bytesCount )
24
38
{
25
39
}
26
40
27
41
public void DispatchFrame ( )
28
42
{
29
43
}
30
44
}
31
-
45
+
32
46
#if true
33
47
public class NetworkMetrics : INetworkMetrics
34
48
{
@@ -38,24 +52,42 @@ public class NetworkMetrics : INetworkMetrics
38
52
private EventMetric < NamedMessageEvent > m_NamedMessageSentEvent = new EventMetric < NamedMessageEvent > ( "Named Message Sent" ) ;
39
53
private EventMetric < NamedMessageEvent > m_NamedMessageReceivedEvent = new EventMetric < NamedMessageEvent > ( "Named Message Received" ) ;
40
54
55
+ private Dictionary < ulong , NetworkObjectIdentifier > m_NetworkGameObjects = new Dictionary < ulong , NetworkObjectIdentifier > ( ) ;
56
+
41
57
public NetworkMetrics ( NetworkManager networkManager )
42
58
{
43
59
m_NetworkManager = networkManager ;
44
60
m_Dispatcher = new MetricDispatcherBuilder ( )
45
61
. WithMetricEvents ( m_NamedMessageSentEvent , m_NamedMessageReceivedEvent )
46
62
. Build ( ) ;
47
-
63
+
48
64
m_Dispatcher . RegisterObserver ( MLAPIObserver . Observer ) ;
49
65
}
50
66
51
- public void TrackNamedMessageSent ( string messageName , ulong bytesCount )
67
+ public void TrackNetworkObject ( NetworkObject networkObject )
68
+ {
69
+ if ( ! m_NetworkGameObjects . ContainsKey ( networkObject . NetworkObjectId ) )
70
+ {
71
+ m_NetworkGameObjects [ networkObject . NetworkObjectId ] = new NetworkObjectIdentifier ( networkObject . name , networkObject . NetworkObjectId ) ;
72
+ }
73
+ }
74
+
75
+ public void TrackNamedMessageSent ( ulong receiver , string messageName , ulong bytesCount )
76
+ {
77
+ m_NamedMessageSentEvent . Mark ( new NamedMessageEvent ( new ConnectionInfo ( receiver ) , messageName , bytesCount ) ) ;
78
+ }
79
+
80
+ public void TrackNamedMessageSent ( IReadOnlyCollection < ulong > receivers , string messageName , ulong bytesCount )
52
81
{
53
- m_NamedMessageSentEvent . Mark ( new NamedMessageEvent ( new ConnectionInfo ( m_NetworkManager . LocalClientId ) , messageName , bytesCount ) ) ;
82
+ foreach ( var receiver in receivers )
83
+ {
84
+ TrackNamedMessageSent ( receiver , messageName , bytesCount ) ;
85
+ }
54
86
}
55
87
56
- public void TrackNamedMessageReceived ( string messageName , ulong bytesCount )
88
+ public void TrackNamedMessageReceived ( ulong sender , string messageName , ulong bytesCount )
57
89
{
58
- m_NamedMessageReceivedEvent . Mark ( new NamedMessageEvent ( new ConnectionInfo ( m_NetworkManager . LocalClientId ) , messageName , bytesCount ) ) ;
90
+ m_NamedMessageReceivedEvent . Mark ( new NamedMessageEvent ( new ConnectionInfo ( sender ) , messageName , bytesCount ) ) ;
59
91
}
60
92
61
93
public void DispatchFrame ( )
@@ -74,4 +106,4 @@ static MLAPIObserver()
74
106
}
75
107
}
76
108
#endif
77
- }
109
+ }
0 commit comments