mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 13:13:27 +02:00
fixed bug in processing of entity erase messages
This commit is contained in:
parent
5c2b674a0d
commit
ed6363ca02
4 changed files with 10 additions and 6 deletions
|
@ -75,7 +75,6 @@ void DatagramProcessor::processDatagrams() {
|
|||
case PacketTypeEnvironmentData: {
|
||||
PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings),
|
||||
"Application::networkReceive()... _octreeProcessor.queueReceivedPacket()");
|
||||
|
||||
bool wantExtraDebugging = application->getLogger()->extraDebugging();
|
||||
if (wantExtraDebugging && packetTypeForPacket(incomingPacket) == PacketTypeVoxelData) {
|
||||
int numBytesPacketHeader = numBytesForPacketHeader(incomingPacket);
|
||||
|
|
|
@ -46,7 +46,6 @@ void DeleteEntityOperator::addEntityIDToDeleteList(const EntityItemID& searchEnt
|
|||
details.cube = details.containingElement->getAACube();
|
||||
_entitiesToDelete << details;
|
||||
_lookingCount++;
|
||||
|
||||
_tree->trackDeletedEntity(searchEntityID);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -726,7 +726,6 @@ bool EntityTree::hasEntitiesDeletedSince(quint64 sinceTime) {
|
|||
// sinceTime is an in/out parameter - it will be side effected with the last time sent out
|
||||
bool EntityTree::encodeEntitiesDeletedSince(OCTREE_PACKET_SEQUENCE sequenceNumber, quint64& sinceTime, unsigned char* outputBuffer,
|
||||
size_t maxLength, size_t& outputLength) {
|
||||
|
||||
bool hasMoreToSend = true;
|
||||
|
||||
unsigned char* copyAt = outputBuffer;
|
||||
|
@ -763,6 +762,7 @@ bool EntityTree::encodeEntitiesDeletedSince(OCTREE_PACKET_SEQUENCE sequenceNumbe
|
|||
// we keep a multi map of entity IDs to timestamps, we only want to include the entity IDs that have been
|
||||
// deleted since we last sent to this node
|
||||
_recentlyDeletedEntitiesLock.lockForRead();
|
||||
|
||||
QMultiMap<quint64, QUuid>::const_iterator iterator = _recentlyDeletedEntityItemIDs.constBegin();
|
||||
while (iterator != _recentlyDeletedEntityItemIDs.constEnd()) {
|
||||
QList<QUuid> values = _recentlyDeletedEntityItemIDs.values(iterator.key());
|
||||
|
@ -771,7 +771,6 @@ bool EntityTree::encodeEntitiesDeletedSince(OCTREE_PACKET_SEQUENCE sequenceNumbe
|
|||
// if the timestamp is more recent then out last sent time, include it
|
||||
if (iterator.key() > sinceTime) {
|
||||
QUuid entityID = values.at(valueItem);
|
||||
|
||||
QByteArray encodedEntityID = entityID.toRfc4122();
|
||||
memcpy(copyAt, encodedEntityID.constData(), NUM_BYTES_RFC4122_UUID);
|
||||
copyAt += NUM_BYTES_RFC4122_UUID;
|
||||
|
@ -803,6 +802,7 @@ bool EntityTree::encodeEntitiesDeletedSince(OCTREE_PACKET_SEQUENCE sequenceNumbe
|
|||
|
||||
// replace the correct count for ids included
|
||||
memcpy(numberOfIDsAt, &numberOfIds, sizeof(numberOfIds));
|
||||
|
||||
return hasMoreToSend;
|
||||
}
|
||||
|
||||
|
@ -836,7 +836,6 @@ void EntityTree::forgetEntitiesDeletedBefore(quint64 sinceTime) {
|
|||
// TODO: consider consolidating processEraseMessageDetails() and processEraseMessage()
|
||||
int EntityTree::processEraseMessage(const QByteArray& dataByteArray, const SharedNodePointer& sourceNode) {
|
||||
const bool wantDebug = false;
|
||||
|
||||
if (wantDebug) {
|
||||
qDebug() << "EntityTree::processEraseMessage()...";
|
||||
}
|
||||
|
@ -850,8 +849,13 @@ int EntityTree::processEraseMessage(const QByteArray& dataByteArray, const Share
|
|||
dataAt += numBytesPacketHeader;
|
||||
|
||||
dataAt += sizeof(OCTREE_PACKET_FLAGS);
|
||||
processedBytes += sizeof(OCTREE_PACKET_FLAGS);
|
||||
|
||||
dataAt += sizeof(OCTREE_PACKET_SEQUENCE);
|
||||
processedBytes += sizeof(OCTREE_PACKET_SEQUENCE);
|
||||
|
||||
dataAt += sizeof(OCTREE_PACKET_SENT_TIME);
|
||||
processedBytes += sizeof(OCTREE_PACKET_SENT_TIME);
|
||||
|
||||
uint16_t numberOfIds = 0; // placeholder for now
|
||||
memcpy(&numberOfIds, dataAt, sizeof(numberOfIds));
|
||||
|
|
|
@ -8,12 +8,14 @@
|
|||
cases:
|
||||
PASSED -- 1) test UI delete entity (on client)
|
||||
PASSED -- 2) test UI delete entity (on server)
|
||||
PASSED --- 7) test UI delete on other client
|
||||
|
||||
3) test client shutdown
|
||||
4) test server shutdown (on server) - aka domain restart
|
||||
5) test server shutdown (on client)
|
||||
6) test change domains
|
||||
7) test UI delete on other client
|
||||
|
||||
|
||||
|
||||
9) EntityTreeRenderer::clearModelsCache()
|
||||
|
||||
|
|
Loading…
Reference in a new issue