@@ -14,8 +14,15 @@ namespace MLAPI.Messaging
14
14
/// The manager class to manage custom messages, note that this is different from the NetworkManager custom messages.
15
15
/// These are named and are much easier to use.
16
16
/// </summary>
17
- public static class CustomMessagingManager
17
+ public class CustomMessagingManager
18
18
{
19
+ private NetworkManager m_NetworkManager { get ; }
20
+
21
+ internal CustomMessagingManager ( NetworkManager networkManager )
22
+ {
23
+ m_NetworkManager = networkManager ;
24
+ }
25
+
19
26
#region Unnamed
20
27
21
28
/// <summary>
@@ -28,19 +35,19 @@ public static class CustomMessagingManager
28
35
/// <summary>
29
36
/// Event invoked when unnamed messages arrive
30
37
/// </summary>
31
- public static event UnnamedMessageDelegate OnUnnamedMessage ;
38
+ public event UnnamedMessageDelegate OnUnnamedMessage ;
32
39
33
- internal static void InvokeUnnamedMessage ( ulong clientId , Stream stream ) => OnUnnamedMessage ? . Invoke ( clientId , stream ) ;
40
+ internal void InvokeUnnamedMessage ( ulong clientId , Stream stream ) => OnUnnamedMessage ? . Invoke ( clientId , stream ) ;
34
41
35
42
/// <summary>
36
43
/// Sends unnamed message to a list of clients
37
44
/// </summary>
38
45
/// <param name="clientIds">The clients to send to, sends to everyone if null</param>
39
46
/// <param name="buffer">The message stream containing the data</param>
40
47
/// <param name="networkChannel">The channel to send the data on</param>
41
- public static void SendUnnamedMessage ( List < ulong > clientIds , NetworkBuffer buffer , NetworkChannel networkChannel = NetworkChannel . Internal )
48
+ public void SendUnnamedMessage ( List < ulong > clientIds , NetworkBuffer buffer , NetworkChannel networkChannel = NetworkChannel . Internal )
42
49
{
43
- if ( ! NetworkManager . Singleton . IsServer )
50
+ if ( ! m_NetworkManager . IsServer )
44
51
{
45
52
if ( NetworkLog . CurrentLogLevel <= LogLevel . Error )
46
53
{
@@ -60,7 +67,7 @@ public static void SendUnnamedMessage(List<ulong> clientIds, NetworkBuffer buffe
60
67
/// <param name="clientId">The client to send the message to</param>
61
68
/// <param name="buffer">The message stream containing the data</param>
62
69
/// <param name="networkChannel">The channel tos end the data on</param>
63
- public static void SendUnnamedMessage ( ulong clientId , NetworkBuffer buffer , NetworkChannel networkChannel = NetworkChannel . Internal )
70
+ public void SendUnnamedMessage ( ulong clientId , NetworkBuffer buffer , NetworkChannel networkChannel = NetworkChannel . Internal )
64
71
{
65
72
InternalMessageSender . Send ( clientId , NetworkConstants . UNNAMED_MESSAGE , networkChannel , buffer ) ;
66
73
PerformanceDataManager . Increment ( ProfilerConstants . UnnamedMessageSent ) ;
@@ -75,12 +82,12 @@ public static void SendUnnamedMessage(ulong clientId, NetworkBuffer buffer, Netw
75
82
/// </summary>
76
83
public delegate void HandleNamedMessageDelegate ( ulong sender , Stream payload ) ;
77
84
78
- private static Dictionary < ulong , HandleNamedMessageDelegate > s_NamedMessageHandlers32 = new Dictionary < ulong , HandleNamedMessageDelegate > ( ) ;
79
- private static Dictionary < ulong , HandleNamedMessageDelegate > s_NamedMessageHandlers64 = new Dictionary < ulong , HandleNamedMessageDelegate > ( ) ;
85
+ private Dictionary < ulong , HandleNamedMessageDelegate > s_NamedMessageHandlers32 = new Dictionary < ulong , HandleNamedMessageDelegate > ( ) ;
86
+ private Dictionary < ulong , HandleNamedMessageDelegate > s_NamedMessageHandlers64 = new Dictionary < ulong , HandleNamedMessageDelegate > ( ) ;
80
87
81
- internal static void InvokeNamedMessage ( ulong hash , ulong sender , Stream stream )
88
+ internal void InvokeNamedMessage ( ulong hash , ulong sender , Stream stream )
82
89
{
83
- if ( NetworkManager . Singleton == null )
90
+ if ( m_NetworkManager == null )
84
91
{
85
92
// We dont know what size to use. Try every (more collision prone)
86
93
if ( s_NamedMessageHandlers32 . ContainsKey ( hash ) )
@@ -96,7 +103,7 @@ internal static void InvokeNamedMessage(ulong hash, ulong sender, Stream stream)
96
103
else
97
104
{
98
105
// Only check the right size.
99
- switch ( NetworkManager . Singleton . NetworkConfig . RpcHashSize )
106
+ switch ( m_NetworkManager . NetworkConfig . RpcHashSize )
100
107
{
101
108
case HashSize . VarIntFourBytes :
102
109
if ( s_NamedMessageHandlers32 . ContainsKey ( hash ) )
@@ -119,7 +126,7 @@ internal static void InvokeNamedMessage(ulong hash, ulong sender, Stream stream)
119
126
/// </summary>
120
127
/// <param name="name">Name of the message.</param>
121
128
/// <param name="callback">The callback to run when a named message is received.</param>
122
- public static void RegisterNamedMessageHandler ( string name , HandleNamedMessageDelegate callback )
129
+ public void RegisterNamedMessageHandler ( string name , HandleNamedMessageDelegate callback )
123
130
{
124
131
s_NamedMessageHandlers32 [ XXHash . Hash32 ( name ) ] = callback ;
125
132
s_NamedMessageHandlers64 [ XXHash . Hash64 ( name ) ] = callback ;
@@ -129,7 +136,7 @@ public static void RegisterNamedMessageHandler(string name, HandleNamedMessageDe
129
136
/// Unregisters a named message handler.
130
137
/// </summary>
131
138
/// <param name="name">The name of the message.</param>
132
- public static void UnregisterNamedMessageHandler ( string name )
139
+ public void UnregisterNamedMessageHandler ( string name )
133
140
{
134
141
s_NamedMessageHandlers32 . Remove ( XXHash . Hash32 ( name ) ) ;
135
142
s_NamedMessageHandlers64 . Remove ( XXHash . Hash64 ( name ) ) ;
@@ -142,10 +149,10 @@ public static void UnregisterNamedMessageHandler(string name)
142
149
/// <param name="clientId">The client to send the message to</param>
143
150
/// <param name="stream">The message stream containing the data</param>
144
151
/// <param name="networkChannel">The channel to send the data on</param>
145
- public static void SendNamedMessage ( string name , ulong clientId , Stream stream , NetworkChannel networkChannel = NetworkChannel . Internal )
152
+ public void SendNamedMessage ( string name , ulong clientId , Stream stream , NetworkChannel networkChannel = NetworkChannel . Internal )
146
153
{
147
154
ulong hash = 0 ;
148
- switch ( NetworkManager . Singleton . NetworkConfig . RpcHashSize )
155
+ switch ( m_NetworkManager . NetworkConfig . RpcHashSize )
149
156
{
150
157
case HashSize . VarIntFourBytes :
151
158
hash = XXHash . Hash32 ( name ) ;
@@ -174,10 +181,10 @@ public static void SendNamedMessage(string name, ulong clientId, Stream stream,
174
181
/// <param name="clientIds">The clients to send to, sends to everyone if null</param>
175
182
/// <param name="stream">The message stream containing the data</param>
176
183
/// <param name="networkChannel">The channel to send the data on</param>
177
- public static void SendNamedMessage ( string name , List < ulong > clientIds , Stream stream , NetworkChannel networkChannel = NetworkChannel . Internal )
184
+ public void SendNamedMessage ( string name , List < ulong > clientIds , Stream stream , NetworkChannel networkChannel = NetworkChannel . Internal )
178
185
{
179
186
ulong hash = 0 ;
180
- switch ( NetworkManager . Singleton . NetworkConfig . RpcHashSize )
187
+ switch ( m_NetworkManager . NetworkConfig . RpcHashSize )
181
188
{
182
189
case HashSize . VarIntFourBytes :
183
190
hash = XXHash . Hash32 ( name ) ;
@@ -194,7 +201,7 @@ public static void SendNamedMessage(string name, List<ulong> clientIds, Stream s
194
201
195
202
messageBuffer . CopyFrom ( stream ) ;
196
203
197
- if ( ! NetworkManager . Singleton . IsServer )
204
+ if ( ! m_NetworkManager . IsServer )
198
205
{
199
206
if ( NetworkLog . CurrentLogLevel <= LogLevel . Error )
200
207
{
0 commit comments