/// <summary> /// invoke a remote precedure call. /// </summary> /// <param name="rpcMethodName">method name</param> /// <param name="targets"> <see cref="PlayRPCTargets"/>.</param> /// <param name="rpcParameters"></param> public static void RPC(string rpcMethodName, PlayRPCTargets targets, params object[] rpcParameters) { var rpcMessage = new PlayRpcMessage(); rpcMessage.MethodName = rpcMethodName; rpcMessage.Paramters = rpcParameters; if (targets.IsIn(PlayRPCTargets.All, PlayRPCTargets.AllBuffered)) { rpcMessage.Echo = true; } if (targets.IsIn(PlayRPCTargets.OthersBuffered, PlayRPCTargets.AllBuffered)) { rpcMessage.Cached = true; } if (targets.IsIn(PlayRPCTargets.MasterClient)) { rpcMessage.ToPeers = new List <string>() { Room.MasterClientId, }; if (Play.Player.UserID == Play.Room.MasterClientId) { rpcMessage.Echo = true; } } Play.ExecuteRPC(rpcMessage); }
/// <summary> /// call /// </summary> /// <param name="rpcMethodName"></param> /// <param name="userIds"></param> /// <param name="rpcParameters"></param> public static void RPC(string rpcMethodName, IEnumerable <string> userIds, params object[] rpcParameters) { var rpcMessage = new PlayRpcMessage(); rpcMessage.MethodName = rpcMethodName; rpcMessage.Paramters = rpcParameters; rpcMessage.ToPeers = new List <string>(userIds); Play.ExecuteRPC(rpcMessage); }