From bc5079e5d75f814f7011dde15f7541cd220a9a48 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 14 Dec 2018 10:06:55 -0800 Subject: [PATCH] fix flawed logic in updateEntityQueryAACubeWorker --- libraries/entities/src/EntityTree.cpp | 44 +++++++++++++-------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 63bcd70a14..506df95007 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -2962,30 +2962,28 @@ bool EntityTree::removeMaterialFromOverlay(const QUuid& overlayID, graphics::Mat void EntityTree::updateEntityQueryAACubeWorker(SpatiallyNestablePointer object, EntityEditPacketSender* packetSender, MovingEntitiesOperator& moveOperator, bool force, bool tellServer) { // if the queryBox has changed, tell the entity-server - if (object->getNestableType() == NestableType::Entity && object->updateQueryAACube()) { - EntityItemPointer entity = std::static_pointer_cast(object); - if (entity->updateQueryAACube() || force) { - bool success; - AACube newCube = entity->getQueryAACube(success); - if (success) { - moveOperator.addEntityToMoveList(entity, newCube); - } - // send an edit packet to update the entity-server about the queryAABox - // unless it is client-only - if (tellServer && packetSender && entity->isDomainEntity()) { - quint64 now = usecTimestampNow(); - EntityItemProperties properties = entity->getProperties(); - properties.setQueryAACubeDirty(); - properties.setLocationDirty(); - properties.setLastEdited(now); - - packetSender->queueEditEntityMessage(PacketType::EntityEdit, getThisPointer(), entity->getID(), properties); - entity->setLastBroadcast(now); // for debug/physics status icons - } - - entity->markDirtyFlags(Simulation::DIRTY_POSITION); - entityChanged(entity); + EntityItemPointer entity = std::dynamic_pointer_cast(object); + if (entity && (entity->updateQueryAACube() || force)) { + bool success; + AACube newCube = entity->getQueryAACube(success); + if (success) { + moveOperator.addEntityToMoveList(entity, newCube); } + // send an edit packet to update the entity-server about the queryAABox + // unless it is client-only + if (tellServer && packetSender && entity->isDomainEntity()) { + quint64 now = usecTimestampNow(); + EntityItemProperties properties = entity->getProperties(); + properties.setQueryAACubeDirty(); + properties.setLocationDirty(); + properties.setLastEdited(now); + + packetSender->queueEditEntityMessage(PacketType::EntityEdit, getThisPointer(), entity->getID(), properties); + entity->setLastBroadcast(now); // for debug/physics status icons + } + + entity->markDirtyFlags(Simulation::DIRTY_POSITION); + entityChanged(entity); } object->forEachDescendant([&](SpatiallyNestablePointer descendant) {