Showing the changes to interface/src/MetavoxelSystem.cpp (1 of 6 files). Show all
Unified · Split
| @@ -186,14 +186,15 @@ static QByteArray createDatagramHeader(const QUuid& sessionID) { · 185 unmodified lines | ||
| 186 | 186 | MetavoxelClient::MetavoxelClient(const HifiSockAddr& address) : |
| 187 | 187 | _address(address), |
| 188 | 188 | _sessionID(QUuid::createUuid()), |
| 189 | − _sequencer(createDatagramHeader(_sessionID)) { | |
| 189 | + _sequencer(createDatagramHeader(_sessionID)), | |
| 190 | + _data(new MetavoxelData()) { | |
| 190 | 191 | |
| 191 | 192 | connect(&_sequencer, SIGNAL(readyToWrite(const QByteArray&)), SLOT(sendData(const QByteArray&))); |
| 192 | 193 | connect(&_sequencer, SIGNAL(readyToRead(Bitstream&)), SLOT(readPacket(Bitstream&))); |
| 193 | 194 | connect(&_sequencer, SIGNAL(receiveAcknowledged(int)), SLOT(clearReceiveRecordsBefore(int))); |
| 194 | 195 | |
| 195 | 196 | // insert the baseline receive record |
| 196 | − ReceiveRecord record = { 0 }; | |
| 197 | + ReceiveRecord record = { 0, _data }; | |
| 197 | 198 | _receiveRecords.append(record); |
| 198 | 199 | } |
| 199 | 200 | |
| @@ -219,10 +220,10 @@ void MetavoxelClient::sendData(const QByteArray& data) { · 19 unmodified lines | ||
| 219 | 220 | void MetavoxelClient::readPacket(Bitstream& in) { |
| 220 | 221 | QVariant message; |
| 221 | 222 | in >> message; |
| 222 | − handleMessage(message); | |
| 223 | + handleMessage(message, in); | |
| 223 | 224 | |
| 224 | 225 | // record the receipt |
| 225 | − ReceiveRecord record = { _sequencer.getIncomingPacketNumber() }; | |
| 226 | + ReceiveRecord record = { _sequencer.getIncomingPacketNumber(), _data }; | |
| 226 | 227 | _receiveRecords.append(record); |
| 227 | 228 | } |
| 228 | 229 | |
| @@ -230,14 +231,14 @@ void MetavoxelClient::clearReceiveRecordsBefore(int index) { · 1 unmodified line | ||
| 230 | 231 | _receiveRecords.erase(_receiveRecords.begin(), _receiveRecords.begin() + index + 1); |
| 231 | 232 | } |
| 232 | 233 | |
| 233 | −void MetavoxelClient::handleMessage(const QVariant& message) { | |
| 234 | +void MetavoxelClient::handleMessage(const QVariant& message, Bitstream& in) { | |
| 234 | 235 | int userType = message.userType(); |
| 235 | 236 | if (userType == MetavoxelDeltaMessage::Type) { |
| 236 | − | |
| 237 | + _data->readDelta(*_receiveRecords.first().data, in); | |
| 237 | 238 | |
| 238 | 239 | } else if (userType == QMetaType::QVariantList) { |
| 239 | 240 | foreach (const QVariant& element, message.toList()) { |
| 240 | − handleMessage(element); | |
| 241 | + handleMessage(element, in); | |
| 241 | 242 | } |
| 242 | 243 | } |
| 243 | 244 | } |