@@ -141,6 +141,7 @@ public virtual void OnLostOwnership()
141
141
}
142
142
143
143
internal Dictionary < string , MethodInfo > cachedMethods = new Dictionary < string , MethodInfo > ( ) ;
144
+ internal Dictionary < string , string > messageChannelName = new Dictionary < string , string > ( ) ;
144
145
145
146
/// <summary>
146
147
/// Called when a new client connects
@@ -183,15 +184,24 @@ public virtual void OnSetLocalVisibility(bool visible)
183
184
184
185
private void CacheAttributedMethods ( )
185
186
{
187
+ if ( NetworkingManager . singleton . NetworkConfig . AttributeMessageMode == AttributeMessageMode . Disabled )
188
+ return ;
189
+
186
190
MethodInfo [ ] methods = GetType ( ) . GetMethods ( BindingFlags . Instance | BindingFlags . Public | BindingFlags . NonPublic | BindingFlags . Instance | BindingFlags . FlattenHierarchy ) ;
187
191
for ( int i = 0 ; i < methods . Length ; i ++ )
188
192
{
189
193
if ( methods [ i ] . IsDefined ( typeof ( Command ) , true ) || methods [ i ] . IsDefined ( typeof ( ClientRpc ) , true ) || methods [ i ] . IsDefined ( typeof ( TargetRpc ) , true ) )
190
194
{
191
- Data . Cache . RegisterMessageAttributeName ( methods [ i ] . Name ) ;
195
+ Data . Cache . RegisterMessageAttributeName ( methods [ i ] . Name , NetworkingManager . singleton . NetworkConfig . AttributeMessageMode ) ;
192
196
if ( ! cachedMethods . ContainsKey ( methods [ i ] . Name ) )
193
197
cachedMethods . Add ( methods [ i ] . Name , methods [ i ] ) ;
194
198
}
199
+ if ( methods [ i ] . IsDefined ( typeof ( Command ) , true ) && ! messageChannelName . ContainsKey ( methods [ i ] . Name ) )
200
+ messageChannelName . Add ( methods [ i ] . Name , ( ( Command [ ] ) methods [ i ] . GetCustomAttributes ( typeof ( Command ) , true ) ) [ 0 ] . channelName ) ;
201
+ if ( methods [ i ] . IsDefined ( typeof ( ClientRpc ) , true ) && ! messageChannelName . ContainsKey ( methods [ i ] . Name ) )
202
+ messageChannelName . Add ( methods [ i ] . Name , ( ( ClientRpc [ ] ) methods [ i ] . GetCustomAttributes ( typeof ( ClientRpc ) , true ) ) [ 0 ] . channelName ) ;
203
+ if ( methods [ i ] . IsDefined ( typeof ( TargetRpc ) , true ) && ! messageChannelName . ContainsKey ( methods [ i ] . Name ) )
204
+ messageChannelName . Add ( methods [ i ] . Name , ( ( TargetRpc [ ] ) methods [ i ] . GetCustomAttributes ( typeof ( TargetRpc ) , true ) ) [ 0 ] . channelName ) ;
195
205
}
196
206
}
197
207
@@ -217,8 +227,13 @@ protected void InvokeCommand(string methodName, params object[] methodParams)
217
227
if ( LogHelper . CurrentLogLevel <= LogLevel . Normal ) LogHelper . LogWarning ( "Invalid Command name. Command methods have to start with Cmd" ) ;
218
228
return ;
219
229
}
230
+ if ( NetworkingManager . singleton . NetworkConfig . AttributeMessageMode == AttributeMessageMode . Disabled )
231
+ {
232
+ if ( LogHelper . CurrentLogLevel <= LogLevel . Normal ) LogHelper . LogWarning ( "Calling InvokeCommand is not allowed when AttributeMessageMode is set to disabled" ) ;
233
+ return ;
234
+ }
220
235
221
- ulong hash = Data . Cache . GetMessageAttributeHash ( methodName ) ;
236
+ ulong hash = Data . Cache . GetMessageAttributeHash ( methodName , NetworkingManager . singleton . NetworkConfig . AttributeMessageMode ) ;
222
237
using ( BitWriter writer = BitWriter . Get ( ) )
223
238
{
224
239
writer . WriteUInt ( networkId ) ;
@@ -232,7 +247,7 @@ protected void InvokeCommand(string methodName, params object[] methodParams)
232
247
FieldTypeHelper . WriteFieldType ( writer , methodParams [ i ] , fieldType ) ;
233
248
}
234
249
235
- InternalMessageHandler . Send ( NetworkingManager . singleton . NetworkConfig . NetworkTransport . ServerNetId , "MLAPI_COMMAND" , "MLAPI_INTERNAL" , writer , null ) ;
250
+ InternalMessageHandler . Send ( NetworkingManager . singleton . NetworkConfig . NetworkTransport . ServerNetId , "MLAPI_COMMAND" , messageChannelName [ methodName ] , writer , null ) ;
236
251
}
237
252
}
238
253
@@ -253,8 +268,13 @@ protected void InvokeClientRpc(string methodName, params object[] methodParams)
253
268
if ( LogHelper . CurrentLogLevel <= LogLevel . Normal ) LogHelper . LogWarning ( "Invalid Command name. Command methods have to start with Cmd" ) ;
254
269
return ;
255
270
}
271
+ if ( NetworkingManager . singleton . NetworkConfig . AttributeMessageMode == AttributeMessageMode . Disabled )
272
+ {
273
+ if ( LogHelper . CurrentLogLevel <= LogLevel . Normal ) LogHelper . LogWarning ( "Calling InvokeClientRpc is not allowed when AttributeMessageMode is set to disabled" ) ;
274
+ return ;
275
+ }
256
276
257
- ulong hash = Data . Cache . GetMessageAttributeHash ( methodName ) ;
277
+ ulong hash = Data . Cache . GetMessageAttributeHash ( methodName , NetworkingManager . singleton . NetworkConfig . AttributeMessageMode ) ;
258
278
using ( BitWriter writer = BitWriter . Get ( ) )
259
279
{
260
280
writer . WriteUInt ( networkId ) ;
@@ -268,7 +288,7 @@ protected void InvokeClientRpc(string methodName, params object[] methodParams)
268
288
writer . WriteBits ( ( byte ) fieldType , 5 ) ;
269
289
FieldTypeHelper . WriteFieldType ( writer , methodParams [ i ] , fieldType ) ;
270
290
}
271
- InternalMessageHandler . Send ( "MLAPI_RPC" , "MLAPI_INTERNAL" , writer , networkId ) ;
291
+ InternalMessageHandler . Send ( "MLAPI_RPC" , messageChannelName [ methodName ] , writer , networkId ) ;
272
292
}
273
293
}
274
294
@@ -289,8 +309,13 @@ protected void InvokeTargetRpc(string methodName, params object[] methodParams)
289
309
if ( LogHelper . CurrentLogLevel <= LogLevel . Normal ) LogHelper . LogWarning ( "Invalid Command name. Command methods have to start with Cmd" ) ;
290
310
return ;
291
311
}
312
+ if ( NetworkingManager . singleton . NetworkConfig . AttributeMessageMode == AttributeMessageMode . Disabled )
313
+ {
314
+ if ( LogHelper . CurrentLogLevel <= LogLevel . Normal ) LogHelper . LogWarning ( "Calling InvokeTargetRpc is not allowed when AttributeMessageMode is set to disabled" ) ;
315
+ return ;
316
+ }
292
317
293
- ulong hash = Data . Cache . GetMessageAttributeHash ( methodName ) ;
318
+ ulong hash = Data . Cache . GetMessageAttributeHash ( methodName , NetworkingManager . singleton . NetworkConfig . AttributeMessageMode ) ;
294
319
using ( BitWriter writer = BitWriter . Get ( ) )
295
320
{
296
321
writer . WriteUInt ( networkId ) ;
@@ -303,7 +328,7 @@ protected void InvokeTargetRpc(string methodName, params object[] methodParams)
303
328
writer . WriteBits ( ( byte ) fieldType , 5 ) ;
304
329
FieldTypeHelper . WriteFieldType ( writer , methodParams [ i ] , fieldType ) ;
305
330
}
306
- InternalMessageHandler . Send ( ownerClientId , "MLAPI_RPC" , "MLAPI_INTERNAL" , writer , networkId ) ;
331
+ InternalMessageHandler . Send ( ownerClientId , "MLAPI_RPC" , messageChannelName [ methodName ] , writer , networkId ) ;
307
332
}
308
333
}
309
334
0 commit comments