private void AuthRPC(string methodName, NetWorker socket, NetworkingPlayer player, bool runOnServer, string uniqueIdentifier, bool reliable, params object[] arguments)
{
int rpcId = GetStreamRPC(methodName, NetworkReceivers.All, arguments);
if (socket is CrossPlatformUDP)
((CrossPlatformUDP)socket).Write(uniqueIdentifier + methodName, player, rpcNetworkingStream, reliable);
else
socket.Write(player, rpcNetworkingStream);
if (socket.IsServer && runOnServer)
{
Unity.MainThreadManager.Run(() =>
{
bool failedValidate = false;
foreach (IBRPCIntercept intercept in RPCs[rpcId].Value)
{
if (!intercept.ValidateRPC(RPCs[rpcId].Key))
{
failedValidate = true;
break;
}
}
if (!failedValidate)
RPCs[rpcId].Key.Invoke(this, arguments);
});
}
}