@@ -141,6 +141,7 @@ public virtual void OnLostOwnership()
141141 }
142142
143143 internal Dictionary < string , MethodInfo > cachedMethods = new Dictionary < string , MethodInfo > ( ) ;
144+ internal Dictionary < string , string > messageChannelName = new Dictionary < string , string > ( ) ;
144145
145146 /// <summary>
146147 /// Called when a new client connects
@@ -183,15 +184,24 @@ public virtual void OnSetLocalVisibility(bool visible)
183184
184185 private void CacheAttributedMethods ( )
185186 {
187+ if ( NetworkingManager . singleton . NetworkConfig . AttributeMessageMode == AttributeMessageMode . Disabled )
188+ return ;
189+
186190 MethodInfo [ ] methods = GetType ( ) . GetMethods ( BindingFlags . Instance | BindingFlags . Public | BindingFlags . NonPublic | BindingFlags . Instance | BindingFlags . FlattenHierarchy ) ;
187191 for ( int i = 0 ; i < methods . Length ; i ++ )
188192 {
189193 if ( methods [ i ] . IsDefined ( typeof ( Command ) , true ) || methods [ i ] . IsDefined ( typeof ( ClientRpc ) , true ) || methods [ i ] . IsDefined ( typeof ( TargetRpc ) , true ) )
190194 {
191- Data . Cache . RegisterMessageAttributeName ( methods [ i ] . Name ) ;
195+ Data . Cache . RegisterMessageAttributeName ( methods [ i ] . Name , NetworkingManager . singleton . NetworkConfig . AttributeMessageMode ) ;
192196 if ( ! cachedMethods . ContainsKey ( methods [ i ] . Name ) )
193197 cachedMethods . Add ( methods [ i ] . Name , methods [ i ] ) ;
194198 }
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 ) ;
195205 }
196206 }
197207
@@ -217,8 +227,13 @@ protected void InvokeCommand(string methodName, params object[] methodParams)
217227 if ( LogHelper . CurrentLogLevel <= LogLevel . Normal ) LogHelper . LogWarning ( "Invalid Command name. Command methods have to start with Cmd" ) ;
218228 return ;
219229 }
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+ }
220235
221- ulong hash = Data . Cache . GetMessageAttributeHash ( methodName ) ;
236+ ulong hash = Data . Cache . GetMessageAttributeHash ( methodName , NetworkingManager . singleton . NetworkConfig . AttributeMessageMode ) ;
222237 using ( BitWriter writer = BitWriter . Get ( ) )
223238 {
224239 writer . WriteUInt ( networkId ) ;
@@ -232,7 +247,7 @@ protected void InvokeCommand(string methodName, params object[] methodParams)
232247 FieldTypeHelper . WriteFieldType ( writer , methodParams [ i ] , fieldType ) ;
233248 }
234249
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 ) ;
236251 }
237252 }
238253
@@ -253,8 +268,13 @@ protected void InvokeClientRpc(string methodName, params object[] methodParams)
253268 if ( LogHelper . CurrentLogLevel <= LogLevel . Normal ) LogHelper . LogWarning ( "Invalid Command name. Command methods have to start with Cmd" ) ;
254269 return ;
255270 }
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+ }
256276
257- ulong hash = Data . Cache . GetMessageAttributeHash ( methodName ) ;
277+ ulong hash = Data . Cache . GetMessageAttributeHash ( methodName , NetworkingManager . singleton . NetworkConfig . AttributeMessageMode ) ;
258278 using ( BitWriter writer = BitWriter . Get ( ) )
259279 {
260280 writer . WriteUInt ( networkId ) ;
@@ -268,7 +288,7 @@ protected void InvokeClientRpc(string methodName, params object[] methodParams)
268288 writer . WriteBits ( ( byte ) fieldType , 5 ) ;
269289 FieldTypeHelper . WriteFieldType ( writer , methodParams [ i ] , fieldType ) ;
270290 }
271- InternalMessageHandler . Send ( "MLAPI_RPC" , "MLAPI_INTERNAL" , writer , networkId ) ;
291+ InternalMessageHandler . Send ( "MLAPI_RPC" , messageChannelName [ methodName ] , writer , networkId ) ;
272292 }
273293 }
274294
@@ -289,8 +309,13 @@ protected void InvokeTargetRpc(string methodName, params object[] methodParams)
289309 if ( LogHelper . CurrentLogLevel <= LogLevel . Normal ) LogHelper . LogWarning ( "Invalid Command name. Command methods have to start with Cmd" ) ;
290310 return ;
291311 }
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+ }
292317
293- ulong hash = Data . Cache . GetMessageAttributeHash ( methodName ) ;
318+ ulong hash = Data . Cache . GetMessageAttributeHash ( methodName , NetworkingManager . singleton . NetworkConfig . AttributeMessageMode ) ;
294319 using ( BitWriter writer = BitWriter . Get ( ) )
295320 {
296321 writer . WriteUInt ( networkId ) ;
@@ -303,7 +328,7 @@ protected void InvokeTargetRpc(string methodName, params object[] methodParams)
303328 writer . WriteBits ( ( byte ) fieldType , 5 ) ;
304329 FieldTypeHelper . WriteFieldType ( writer , methodParams [ i ] , fieldType ) ;
305330 }
306- InternalMessageHandler . Send ( ownerClientId , "MLAPI_RPC" , "MLAPI_INTERNAL" , writer , networkId ) ;
331+ InternalMessageHandler . Send ( ownerClientId , "MLAPI_RPC" , messageChannelName [ methodName ] , writer , networkId ) ;
307332 }
308333 }
309334
0 commit comments