@@ -363,6 +363,9 @@ void NetPacket::FillBufferWithCommand(UnsignedByte *buffer, NetCommandRef *ref)
363363 case NETCOMMANDTYPE_FRAMERESENDREQUEST:
364364 FillBufferWithFrameResendRequestMessage (buffer, ref);
365365 break ;
366+ case NETCOMMANDTYPE_WRAPPER:
367+ FillBufferWithWrapperCommand (buffer, ref);
368+ break ;
366369 default :
367370 DEBUG_CRASH ((" Unknown NETCOMMANDTYPE %d" , msg->getNetCommandType ()));
368371 break ;
@@ -1469,6 +1472,75 @@ void NetPacket::FillBufferWithFrameResendRequestMessage(UnsignedByte *buffer, Ne
14691472 offset += sizeof (frameToResend);
14701473}
14711474
1475+ void NetPacket::FillBufferWithWrapperCommand (UnsignedByte *buffer, NetCommandRef *msg) {
1476+ NetWrapperCommandMsg *cmdMsg = static_cast <NetWrapperCommandMsg *>(msg->getCommand ());
1477+ UnsignedInt offset = 0 ;
1478+
1479+ // command type
1480+ buffer[offset] = NetPacketFieldTypes::CommandType;
1481+ ++offset;
1482+ buffer[offset] = cmdMsg->getNetCommandType ();
1483+ offset += sizeof (UnsignedByte);
1484+
1485+ // relay
1486+ buffer[offset] = NetPacketFieldTypes::Relay;
1487+ ++offset;
1488+ buffer[offset] = msg->getRelay ();
1489+ offset += sizeof (UnsignedByte);
1490+
1491+ // player ID
1492+ buffer[offset] = NetPacketFieldTypes::PlayerId;
1493+ ++offset;
1494+ buffer[offset] = cmdMsg->getPlayerID ();
1495+ offset += sizeof (UnsignedByte);
1496+
1497+ // command ID
1498+ buffer[offset] = NetPacketFieldTypes::CommandId;
1499+ ++offset;
1500+ UnsignedShort newID = cmdMsg->getID ();
1501+ memcpy (buffer + offset, &newID, sizeof (newID));
1502+ offset += sizeof (newID);
1503+
1504+ // data
1505+ buffer[offset] = NetPacketFieldTypes::Data;
1506+ ++offset;
1507+
1508+ // wrapped command ID
1509+ UnsignedShort wrappedCommandID = cmdMsg->getWrappedCommandID ();
1510+ memcpy (buffer + offset, &wrappedCommandID, sizeof (wrappedCommandID));
1511+ offset += sizeof (wrappedCommandID);
1512+
1513+ // chunk number
1514+ UnsignedInt chunkNumber = cmdMsg->getChunkNumber ();
1515+ memcpy (buffer + offset, &chunkNumber, sizeof (chunkNumber));
1516+ offset += sizeof (chunkNumber);
1517+
1518+ // number of chunks
1519+ UnsignedInt numChunks = cmdMsg->getNumChunks ();
1520+ memcpy (buffer + offset, &numChunks, sizeof (numChunks));
1521+ offset += sizeof (numChunks);
1522+
1523+ // total length of data for all chunks
1524+ UnsignedInt totalDataLength = cmdMsg->getTotalDataLength ();
1525+ memcpy (buffer + offset, &totalDataLength, sizeof (totalDataLength));
1526+ offset += sizeof (totalDataLength);
1527+
1528+ // data length for this chunk
1529+ UnsignedInt dataLength = cmdMsg->getDataLength ();
1530+ memcpy (buffer + offset, &dataLength, sizeof (dataLength));
1531+ offset += sizeof (dataLength);
1532+
1533+ // the offset into the data of this chunk
1534+ UnsignedInt dataOffset = cmdMsg->getDataOffset ();
1535+ memcpy (buffer + offset, &dataOffset, sizeof (dataOffset));
1536+ offset += sizeof (dataOffset);
1537+
1538+ // the data for this chunk
1539+ UnsignedByte *data = cmdMsg->getData ();
1540+ memcpy (buffer + offset, data, dataLength);
1541+ offset += dataLength;
1542+ }
1543+
14721544
14731545/* *
14741546 * Constructor
0 commit comments