/// <summary>
        ///     Sends an event with a network object to all clients.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="ev"></param>
        /// <param name="obj"></param>
        /// <param name="method">Unreliable by default.</param>
        public void SendEventToAllClients <T>(NetworkEvents.Event ev, T obj,
                                              NetDeliveryMethod method = NetDeliveryMethod.Unreliable)
        {
            var msg   = server.CreateMessage();
            var bytes = ev.Serialize(obj);

            msg.Write(bytes);
            server.SendToAll(msg, method);
        }
        /// <summary>
        ///     Sends an event with a network object to clients.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="clientConnections"></param>
        /// <param name="ev"></param>
        /// <param name="obj"></param>
        /// <param name="method">Unreliable by default.</param>
        public void SendEventToClient <T>(IList <NetConnection> clientConnections, NetworkEvents.Event ev, T obj,
                                          NetDeliveryMethod method = NetDeliveryMethod.Unreliable)
        {
            var msg   = server.CreateMessage();
            var bytes = ev.Serialize(obj);

            msg.Write(bytes);
            server.SendMessage(msg, clientConnections, method, 0);
        }
        //Save a step when handling network events.
        /// <summary>
        ///     Add callback for a message received
        /// </summary>
        /// <param name="recipient">event Received by Client or Server?</param>
        /// <param name="e"></param>
        /// <param name="callback"></param>
        public void AddIncomingEventHandler(PeerType recipient, NetworkEvents.Event e, IncomingMessageDelegate callback)
        {
            switch (recipient)
            {
            case PeerType.Server:
                OnClientMessageReceived += (s, message) => { message.RunEvent(e, PeerType.Client, callback); };
                break;

            case PeerType.Client:
                OnServerMessageReceived += (s, message) => { message.RunEvent(e, PeerType.Server, callback); };
                break;
            }
        }