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++; }
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++; }