/// <summary> /// /// </summary> /// <param name="msg"></param> void DispatchUserCommand(GameTime gameTime, NetIncomingMessage msg) { var snapshotID = msg.ReadUInt32(); var commandID = msg.ReadUInt32(); var size = msg.ReadInt32(); var data = msg.ReadBytes(size); var state = msg.SenderConnection.GetState(); // we got user command and (command count=1) // this means that client receives snapshot: if (state.CommandCounter == 1) { serverInstance.ClientActivated(msg.SenderConnection.PeekHailGuid()); } // do not feed server with empty command. if (data.Length > 0) { serverInstance.FeedCommand(msg.SenderConnection.PeekHailGuid(), data, commandID, 0); } // set snapshot request when command get. msg.SenderConnection.GetState().RequestSnapshot(snapshotID, commandID); }