mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 04:18:12 +02:00
Merge pull request #7045 from sethalves/fix-query-cube
fix queryAACube lastEdited bug
This commit is contained in:
commit
cc576dd5e3
7 changed files with 16 additions and 1 deletions
|
@ -383,6 +383,7 @@ void MyAvatar::simulate(float deltaTime) {
|
||||||
EntityTreeRenderer* entityTreeRenderer = qApp->getEntities();
|
EntityTreeRenderer* entityTreeRenderer = qApp->getEntities();
|
||||||
EntityTreePointer entityTree = entityTreeRenderer ? entityTreeRenderer->getTree() : nullptr;
|
EntityTreePointer entityTree = entityTreeRenderer ? entityTreeRenderer->getTree() : nullptr;
|
||||||
if (entityTree) {
|
if (entityTree) {
|
||||||
|
auto now = usecTimestampNow();
|
||||||
EntityEditPacketSender* packetSender = qApp->getEntityEditPacketSender();
|
EntityEditPacketSender* packetSender = qApp->getEntityEditPacketSender();
|
||||||
MovingEntitiesOperator moveOperator(entityTree);
|
MovingEntitiesOperator moveOperator(entityTree);
|
||||||
forEachDescendant([&](SpatiallyNestablePointer object) {
|
forEachDescendant([&](SpatiallyNestablePointer object) {
|
||||||
|
@ -397,6 +398,7 @@ void MyAvatar::simulate(float deltaTime) {
|
||||||
if (packetSender) {
|
if (packetSender) {
|
||||||
EntityItemProperties properties = entity->getProperties();
|
EntityItemProperties properties = entity->getProperties();
|
||||||
properties.setQueryAACubeDirty();
|
properties.setQueryAACubeDirty();
|
||||||
|
properties.setLastEdited(now);
|
||||||
packetSender->queueEditEntityMessage(PacketType::EntityEdit, entity->getID(), properties);
|
packetSender->queueEditEntityMessage(PacketType::EntityEdit, entity->getID(), properties);
|
||||||
entity->setLastBroadcast(usecTimestampNow());
|
entity->setLastBroadcast(usecTimestampNow());
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,8 @@ void EntityEditPacketSender::queueEditEntityMessage(PacketType type, EntityItemI
|
||||||
return; // bail early
|
return; // bail early
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert(properties.getLastEdited() > 0);
|
||||||
|
|
||||||
QByteArray bufferOut(NLPacket::maxPayloadSize(type), 0);
|
QByteArray bufferOut(NLPacket::maxPayloadSize(type), 0);
|
||||||
|
|
||||||
if (EntityItemProperties::encodeEntityEditPacket(type, modelID, properties, bufferOut)) {
|
if (EntityItemProperties::encodeEntityEditPacket(type, modelID, properties, bufferOut)) {
|
||||||
|
|
|
@ -470,7 +470,7 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef
|
||||||
Q_ASSERT(parser.offset() == (unsigned int) bytesRead);
|
Q_ASSERT(parser.offset() == (unsigned int) bytesRead);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
quint64 lastEditedFromBufferAdjusted = lastEditedFromBuffer - clockSkew;
|
quint64 lastEditedFromBufferAdjusted = lastEditedFromBuffer == 0 ? 0 : lastEditedFromBuffer - clockSkew;
|
||||||
if (lastEditedFromBufferAdjusted > now) {
|
if (lastEditedFromBufferAdjusted > now) {
|
||||||
lastEditedFromBufferAdjusted = now;
|
lastEditedFromBufferAdjusted = now;
|
||||||
}
|
}
|
||||||
|
|
|
@ -345,6 +345,7 @@ QUuid EntityScriptingInterface::editEntity(QUuid id, const EntityItemProperties&
|
||||||
EntityItemPointer entityDescendant = std::static_pointer_cast<EntityItem>(descendant);
|
EntityItemPointer entityDescendant = std::static_pointer_cast<EntityItem>(descendant);
|
||||||
EntityItemProperties newQueryCubeProperties;
|
EntityItemProperties newQueryCubeProperties;
|
||||||
newQueryCubeProperties.setQueryAACube(descendant->getQueryAACube());
|
newQueryCubeProperties.setQueryAACube(descendant->getQueryAACube());
|
||||||
|
newQueryCubeProperties.setLastEdited(properties.getLastEdited());
|
||||||
queueEntityMessage(PacketType::EntityEdit, descendant->getID(), newQueryCubeProperties);
|
queueEntityMessage(PacketType::EntityEdit, descendant->getID(), newQueryCubeProperties);
|
||||||
entityDescendant->setLastBroadcast(usecTimestampNow());
|
entityDescendant->setLastBroadcast(usecTimestampNow());
|
||||||
}
|
}
|
||||||
|
|
|
@ -815,6 +815,14 @@ void EntityTree::fixupTerseEditLogging(EntityItemProperties& properties, QList<Q
|
||||||
changedProperties[index] = QString("jointTranslations:") + QString::number((int)value);
|
changedProperties[index] = QString("jointTranslations:") + QString::number((int)value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (properties.queryAACubeChanged()) {
|
||||||
|
int index = changedProperties.indexOf("queryAACube");
|
||||||
|
glm::vec3 center = properties.getQueryAACube().calcCenter();
|
||||||
|
changedProperties[index] = QString("queryAACube:") +
|
||||||
|
QString::number((int)center.x) + "," +
|
||||||
|
QString::number((int)center.y) + "," +
|
||||||
|
QString::number((int)center.z);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int EntityTree::processEditPacketData(ReceivedMessage& message, const unsigned char* editData, int maxLength,
|
int EntityTree::processEditPacketData(ReceivedMessage& message, const unsigned char* editData, int maxLength,
|
||||||
|
|
|
@ -459,6 +459,7 @@ bool EntityTreeElement::bestFitEntityBounds(EntityItemPointer entity) const {
|
||||||
bool success;
|
bool success;
|
||||||
auto queryCube = entity->getQueryAACube(success);
|
auto queryCube = entity->getQueryAACube(success);
|
||||||
if (!success) {
|
if (!success) {
|
||||||
|
qDebug() << "EntityTreeElement::bestFitEntityBounds couldn't get queryCube for" << entity->getName() << entity->getID();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return bestFitBounds(queryCube);
|
return bestFitBounds(queryCube);
|
||||||
|
|
|
@ -527,6 +527,7 @@ void EntityMotionState::sendUpdate(OctreeEditPacketSender* packetSender, const Q
|
||||||
if (descendant->computePuffedQueryAACube()) {
|
if (descendant->computePuffedQueryAACube()) {
|
||||||
EntityItemProperties newQueryCubeProperties;
|
EntityItemProperties newQueryCubeProperties;
|
||||||
newQueryCubeProperties.setQueryAACube(descendant->getQueryAACube());
|
newQueryCubeProperties.setQueryAACube(descendant->getQueryAACube());
|
||||||
|
newQueryCubeProperties.setLastEdited(properties.getLastEdited());
|
||||||
entityPacketSender->queueEditEntityMessage(PacketType::EntityEdit, descendant->getID(), newQueryCubeProperties);
|
entityPacketSender->queueEditEntityMessage(PacketType::EntityEdit, descendant->getID(), newQueryCubeProperties);
|
||||||
entityDescendant->setLastBroadcast(usecTimestampNow());
|
entityDescendant->setLastBroadcast(usecTimestampNow());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue