mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 11:48:09 +02:00
send VOXEL_QUERY to out of view voxel servers with PPS of 0
This commit is contained in:
parent
0095259adf
commit
1c2e5eecd6
1 changed files with 25 additions and 22 deletions
|
@ -2381,16 +2381,14 @@ void Application::queryVoxels() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// make sure there's at least one voxel server
|
// assume there's at least one voxel server
|
||||||
if (voxelServerCount < 1) {
|
if (voxelServerCount < 1) {
|
||||||
return; // no voxel servers to talk to, we can bail.
|
voxelServerCount = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// set our preferred PPS to be exactly evenly divided among all of the voxel servers...
|
// set our preferred PPS to be exactly evenly divided among all of the voxel servers...
|
||||||
int perServerPPS = DEFAULT_MAX_VOXEL_PPS/voxelServerCount;
|
int perServerPPS = DEFAULT_MAX_VOXEL_PPS/voxelServerCount;
|
||||||
|
|
||||||
_voxelQuery.setMaxVoxelPacketsPerSecond(perServerPPS);
|
|
||||||
|
|
||||||
UDPSocket* nodeSocket = NodeList::getInstance()->getNodeSocket();
|
UDPSocket* nodeSocket = NodeList::getInstance()->getNodeSocket();
|
||||||
for (NodeList::iterator node = nodeList->begin(); node != nodeList->end(); node++) {
|
for (NodeList::iterator node = nodeList->begin(); node != nodeList->end(); node++) {
|
||||||
// only send to the NodeTypes that are NODE_TYPE_VOXEL_SERVER
|
// only send to the NodeTypes that are NODE_TYPE_VOXEL_SERVER
|
||||||
|
@ -2412,25 +2410,30 @@ void Application::queryVoxels() {
|
||||||
ViewFrustum::location serverFrustumLocation = _viewFrustum.boxInFrustum(serverBounds);
|
ViewFrustum::location serverFrustumLocation = _viewFrustum.boxInFrustum(serverBounds);
|
||||||
|
|
||||||
if (serverFrustumLocation != ViewFrustum::OUTSIDE) {
|
if (serverFrustumLocation != ViewFrustum::OUTSIDE) {
|
||||||
// set up the packet for sending...
|
//printf("_voxelQuery.setMaxVoxelPacketsPerSecond(perServerPPS=%d)\n",perServerPPS);
|
||||||
unsigned char* endOfVoxelQueryPacket = voxelQueryPacket;
|
_voxelQuery.setMaxVoxelPacketsPerSecond(perServerPPS);
|
||||||
|
} else {
|
||||||
// insert packet type/version and node UUID
|
//printf("_voxelQuery.setMaxVoxelPacketsPerSecond(0)\n");
|
||||||
endOfVoxelQueryPacket += populateTypeAndVersion(endOfVoxelQueryPacket, PACKET_TYPE_VOXEL_QUERY);
|
_voxelQuery.setMaxVoxelPacketsPerSecond(0);
|
||||||
QByteArray ownerUUID = nodeList->getOwnerUUID().toRfc4122();
|
|
||||||
memcpy(endOfVoxelQueryPacket, ownerUUID.constData(), ownerUUID.size());
|
|
||||||
endOfVoxelQueryPacket += ownerUUID.size();
|
|
||||||
|
|
||||||
// encode the query data...
|
|
||||||
endOfVoxelQueryPacket += _voxelQuery.getBroadcastData(endOfVoxelQueryPacket);
|
|
||||||
|
|
||||||
int packetLength = endOfVoxelQueryPacket - voxelQueryPacket;
|
|
||||||
|
|
||||||
nodeSocket->send(node->getActiveSocket(), voxelQueryPacket, packetLength);
|
|
||||||
|
|
||||||
// Feed number of bytes to corresponding channel of the bandwidth meter
|
|
||||||
_bandwidthMeter.outputStream(BandwidthMeter::VOXELS).updateValue(packetLength);
|
|
||||||
}
|
}
|
||||||
|
// set up the packet for sending...
|
||||||
|
unsigned char* endOfVoxelQueryPacket = voxelQueryPacket;
|
||||||
|
|
||||||
|
// insert packet type/version and node UUID
|
||||||
|
endOfVoxelQueryPacket += populateTypeAndVersion(endOfVoxelQueryPacket, PACKET_TYPE_VOXEL_QUERY);
|
||||||
|
QByteArray ownerUUID = nodeList->getOwnerUUID().toRfc4122();
|
||||||
|
memcpy(endOfVoxelQueryPacket, ownerUUID.constData(), ownerUUID.size());
|
||||||
|
endOfVoxelQueryPacket += ownerUUID.size();
|
||||||
|
|
||||||
|
// encode the query data...
|
||||||
|
endOfVoxelQueryPacket += _voxelQuery.getBroadcastData(endOfVoxelQueryPacket);
|
||||||
|
|
||||||
|
int packetLength = endOfVoxelQueryPacket - voxelQueryPacket;
|
||||||
|
|
||||||
|
nodeSocket->send(node->getActiveSocket(), voxelQueryPacket, packetLength);
|
||||||
|
|
||||||
|
// Feed number of bytes to corresponding channel of the bandwidth meter
|
||||||
|
_bandwidthMeter.outputStream(BandwidthMeter::VOXELS).updateValue(packetLength);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue