History

Basic editing with delta streaming up and running.

Andrzej Kapolka committed 12 years ago

Commit d5695391 parent 62e8cbe10 files · +118 −68Browse files

Showing the changes to interface/src/MetavoxelSystem.cpp (1 of 10 files). Show all

Unified · Split

interface/src/MetavoxelSystem.cpp+17−3
@@ -41,7 +41,7 @@ void MetavoxelSystem::init() { · 40 unmodified lines
4141 _buffer.create();
4242 }
4343
44−void MetavoxelSystem::applyEdit(const MetavoxelEdit& edit) {
44+void MetavoxelSystem::applyEdit(const MetavoxelEditMessage& edit) {
4545 foreach (MetavoxelClient* client, _clients) {
4646 client->applyEdit(edit);
4747 }
@@ -190,7 +190,14 @@ MetavoxelClient::MetavoxelClient(const HifiSockAddr& address) : · 142 unmodified lines
190190 _receiveRecords.append(record);
191191 }
192192
193−void MetavoxelClient::applyEdit(const MetavoxelEdit& edit) {
193+MetavoxelClient::~MetavoxelClient() {
194+ // close the session
195+ Bitstream& out = _sequencer.startPacket();
196+ out << QVariant::fromValue(CloseSessionMessage());
197+ _sequencer.endPacket();
198+}
199+
200+void MetavoxelClient::applyEdit(const MetavoxelEditMessage& edit) {
194201 // apply immediately to local tree
195202 edit.apply(_data);
196203
@@ -227,6 +234,13 @@ void MetavoxelClient::readPacket(Bitstream& in) { · 30 unmodified lines
227234 // record the receipt
228235 ReceiveRecord record = { _sequencer.getIncomingPacketNumber(), _data };
229236 _receiveRecords.append(record);
237+
238+ // reapply local edits
239+ foreach (const DatagramSequencer::HighPriorityMessage& message, _sequencer.getHighPriorityMessages()) {
240+ if (message.data.userType() == MetavoxelEditMessage::Type) {
241+ message.data.value<MetavoxelEditMessage>().apply(_data);
242+ }
243+ }
230244 }
231245
232246 void MetavoxelClient::clearReceiveRecordsBefore(int index) {
@@ -236,7 +250,7 @@ void MetavoxelClient::clearReceiveRecordsBefore(int index) { · 3 unmodified lines
236250 void MetavoxelClient::handleMessage(const QVariant& message, Bitstream& in) {
237251 int userType = message.userType();
238252 if (userType == MetavoxelDeltaMessage::Type) {
239− // readDelta(_data, _receiveRecords.first().data, in);
253+ _data.readDelta(_receiveRecords.first().data, in);
240254
241255 } else if (userType == QMetaType::QVariantList) {
242256 foreach (const QVariant& element, message.toList()) {