/// <summary> /// Extension shorthand for sending unreliable messages. /// </summary> /// <typeparam name="TTag">Type of tag used.</typeparam> /// <param name="client">IClient to which the message is sent.</param> /// <param name="message">Message object that inherits from IDarkRiftMessage</param> public static bool SendUdpMessage <TTag>(this IClient client, IDarkRiftMessage <TTag> message) where TTag : struct, Enum, IConvertible { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(message); using (DarkRift.Message msg = DarkRift.Message.Create(Convert.ToUInt16(message.Tag), writer)) return(client.SendMessage(msg, SendMode.Unreliable)); } }
/// <summary> /// Extension shorthand for sending reliable messages. /// </summary> /// <typeparam name="TTag">Type of the message that inherits from IMessage & IDarkRiftSerializable</typeparam> /// <param name="client">Client to which this should be sent.</param> /// <param name="message">Message object</param> public static void SendMessageReliable <TTag>(this DarkRiftClient client, IDarkRiftMessage <TTag> message) where TTag : struct, Enum, IConvertible { using (DarkRiftWriter writer = DarkRiftWriter.Create()) { writer.Write(message); using (DarkRift.Message msg = DarkRift.Message.Create(Convert.ToUInt16(message.Tag), writer)) client.SendMessage(msg, SendMode.Reliable); } }
/// <summary> /// Extension shorthand for sending unreliable messages to all clients in a collection, excluding one or multiple clients. /// </summary> /// <typeparam name="TTag"></typeparam> /// <param name="clients"></param> /// <param name="message"></param> /// <param name="exclusionList">List of IClients to exclude.</param> public static void SendUdpMessageToAllExcept <TTag>(this IEnumerable <IClient> clients, IDarkRiftMessage <TTag> message, IEnumerable <IClient> exclusionList) where TTag : struct, Enum, IConvertible { foreach (var c in clients.Except(exclusionList)) { c.SendUdpMessage(message); } }
/// <summary> /// Extension shorthand for sending unreliable messages to all clients in a collection. /// </summary> /// <typeparam name="TTag"></typeparam> /// <param name="clients"></param> /// <param name="message"></param> public static void SendUdpMessageToAll <TTag>(this IEnumerable <IClient> clients, IDarkRiftMessage <TTag> message) where TTag : struct, Enum, IConvertible { foreach (var c in clients) { c.SendTcpMessage(message); } }