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); } }
void ServerReceiveCommand(NetworkMessage message) { var inputCommandMessage = message.ReadMessage <InputSynchronizationMessage>(); var inputCommand = UserCmd.DeSerialize(inputCommandMessage.messageData); if (inputCommand.SequenceNumber - m_LastIncomingSeq > 1) { //We are missing some commands lets start predicting //Run prediction code } else { m_LastIncomingSeq = inputCommand.SequenceNumber; m_StoredCmds.Enqueue(inputCommand); } }