From 0180bdc4fb1d5a6c8cc37be4ae8b5e1fa29eefb0 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 9 Jul 2015 09:24:50 -0700 Subject: [PATCH] Update EntityEditPacketSender to use packet callbacks --- .../entities/src/EntityEditPacketSender.cpp | 16 +++++++++++++--- libraries/entities/src/EntityEditPacketSender.h | 4 ++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/libraries/entities/src/EntityEditPacketSender.cpp b/libraries/entities/src/EntityEditPacketSender.cpp index f228467316..9ed1fa5904 100644 --- a/libraries/entities/src/EntityEditPacketSender.cpp +++ b/libraries/entities/src/EntityEditPacketSender.cpp @@ -17,16 +17,26 @@ #include "EntitiesLogging.h" #include "EntityItem.h" +EntityEditPacketSender::EntityEditPacketSender() { + auto& packetReceiver = DependencyManager::get()->getPacketReceiver(); + packetReceiver.registerPacketListener(PacketType::EntityEditNack, this, "processEntityEditNackPacket"); +} -void EntityEditPacketSender::adjustEditPacketForClockSkew(PacketType::Value type, +void EntityEditPacketSender::processEntityEditNackPacket(std::unique_ptr packet, HifiSockAddr senderSockAddr) { + if (!Menu::getInstance()->isOptionChecked(MenuOption::DisableNackPackets)) { + processNackPacket(QByteArray::fromRawData(packet->getData())); + } +} + +void EntityEditPacketSender::adjustEditPacketForClockSkew(PacketType::Value type, unsigned char* editBuffer, size_t length, int clockSkew) { - + if (type == PacketType::EntityAdd || type == PacketType::EntityEdit) { EntityItem::adjustEditPacketForClockSkew(editBuffer, length, clockSkew); } } -void EntityEditPacketSender::queueEditEntityMessage(PacketType::Value type, EntityItemID modelID, +void EntityEditPacketSender::queueEditEntityMessage(PacketType::Value type, EntityItemID modelID, const EntityItemProperties& properties) { if (!_shouldSend) { return; // bail early diff --git a/libraries/entities/src/EntityEditPacketSender.h b/libraries/entities/src/EntityEditPacketSender.h index ce88f41b04..30076b1832 100644 --- a/libraries/entities/src/EntityEditPacketSender.h +++ b/libraries/entities/src/EntityEditPacketSender.h @@ -20,6 +20,8 @@ class EntityEditPacketSender : public OctreeEditPacketSender { Q_OBJECT public: + EntityEditPacketSender(); + /// Queues an array of several voxel edit messages. Will potentially send a pending multi-command packet. Determines /// which voxel-server node or nodes the packet should be sent to. Can be called even before voxel servers are known, in /// which case up to MaxPendingMessages will be buffered and processed when voxel servers are known. @@ -28,6 +30,8 @@ public: void queueEraseEntityMessage(const EntityItemID& entityItemID); + void processEntityEditNackPacket(std::unique_ptr packet, HifiSockAddr senderSockAddr); + // My server type is the model server virtual char getMyNodeType() const { return NodeType::EntityServer; } virtual void adjustEditPacketForClockSkew(PacketType::Value type, unsigned char* editBuffer, size_t length, int clockSkew);