Example #1
0
    void ServerReceiveCommand(NetworkMessage message)
    {
        InputSynchronizationMessage inputMessage = message.ReadMessage <InputSynchronizationMessage>();

        // Get network ID from sent object.
        NetworkInstanceId netId = new NetworkInstanceId(inputMessage.netId);

        // Find instance of local object.
        GameObject foundObj = NetworkServer.FindLocalObject(netId);

        // Verify object existance.
        if (foundObj == null)
        {
            return;
        }

        // Confirm ownership (only works for single player on one machine).
        if (message.conn.playerControllers[0].unetView.netId == netId)
        {
            // Deserialize user command.
            UserCmd inputCommand = UserCmd.DeSerialize(inputMessage.messageData);

            // Get reference to player input.
            PlayerInputSynchronization input = foundObj.GetComponent <PlayerInputSynchronization>();

            // Send user command to object.
            input.HandleUserCommand(inputCommand);
        }
    }
    public static InputSynchronizationMessage FromUserCmd(UserCmd command)
    {
        var messageData   = command.Serialize();
        var messageLength = messageData.Length;
        //Fill our message fields to be send
        var newMessage = new InputSynchronizationMessage();

        newMessage.messageData = messageData;

        return(newMessage);
    }
    public void PipeUserCommand(UserCmd cmd)
    {
        if (cmd.SequenceNumber - m_LastOutgoingSeq > 1)
        {
            //We are missing some commands, lets look at our choked command history.
            return;
        }
        var newMessage = InputSynchronizationMessage.FromUserCmd(cmd);

        connectionToServer.SendByChannel(
            InputSynchronizationMessage.MessageID,
            newMessage,
            Channels.DefaultUnreliable
            );

        m_LastOutgoingSeq++;
    }
Example #4
0
    public void PipeUserCommand(UserCmd cmd)
    {
        if (cmd.SequenceNumber - m_LastOutgoingSeq > 1)
        {
            //We are missing some commands, lets look at our choked command history.
            return;
        }

        // Create input message.
        InputSynchronizationMessage msg = new InputSynchronizationMessage();

        // Assign message values.
        msg.netId       = netId.Value;
        msg.messageData = cmd.Serialize();

        // Send message to server.
        connectionToServer.SendByChannel(
            InputSynchronizationMessage.MessageID,
            msg,
            Channels.DefaultUnreliable
            );

        m_LastOutgoingSeq++;
    }