private CustomEvent ToNetworkMessage(CustomEventMessage cem)
    {
        CustomEvent mail = new ActionEvent("Broadcast");

        mail ["Broadcast"] = cem;
        return(mail);
    }
    private void HandleInputMessage(CustomEvent ce)
    {
        CustomEventMessage action         = InterpretInputEvent(ce);
        CustomEvent        networkMessage = ToNetworkMessage(action);

        CES.Broadcast(networkMessage, NetworkInChannel);
    }
    /// <summary>
    /// Handles the network message.
    /// if message was sent over the network
    /// that means the input has already been processed and this is a rpc call to affect the game state
    /// </summary>
    /// <param name="ce">Ce.</param>
    private void HandleNetworkOutMessage(CustomEvent ce)
    {
        CustomEventMessage cem         = (CustomEventMessage)ce ["NetworkMessage"];
        CustomEvent        realMessage = cem.content;

        string targetChannel = cem.channelName;

        CES.Broadcast(realMessage, targetChannel);
    }
    //send a message to all other connected players
    public void SendOthers(CustomEventMessage evnt, string channel = DefaultNetworkOutChannel)
    {
        System.IO.StringWriter strStream = new System.IO.StringWriter();
        xmlSerializer.Serialize(strStream, evnt);
        strStream.Flush();
        strStream.Close();
        string toSend = strStream.GetStringBuilder().ToString();

        networkView.RPC("NetMessage", RPCMode.Others, toSend, channel);
    }
    public void NetMessage(string evnt, string channel)
    {
        Debug.Log(evnt);

        System.IO.StringReader strStream = new System.IO.StringReader(evnt);
        CustomEventMessage     CEM       = (CustomEventMessage)xmlSerializer.Deserialize(strStream);
        CustomEvent            ce        = new NotificationEvent("NetworkMessage");

        ce ["NetworkMessage"] = CEM;
        CES.Broadcast(ce, channel);
    }
    void CustomEventMessageHandler(CustomEventMessage evnt)
    {
        string      targetChannel = evnt.channelName;
        CustomEvent ce            = evnt.content;

        if (targetChannel.Equals(InputChannel))
        {
            HandleInputMessage(ce);
        }
        if (targetChannel.Equals(NetworkOutChannel))
        {
            HandleNetworkOutMessage(ce);
        }
    }
    /// <summary>
    /// takes network in messages and sends them to network out
    /// </summary>
    /// <param name="ce">event passed in</param>
    public void NetEventHandler(CustomEvent ce)
    {
        CustomEventMessage cem = (CustomEventMessage)ce ["Broadcast"];

        SendAll(cem);
    }