Optimize usage of TOSERVER_GOTBLOCKS packet

This commit is contained in:
sfan5 2019-08-07 10:31:12 +02:00
parent 4d7f296717
commit 19426387d4
2 changed files with 18 additions and 10 deletions

@ -475,6 +475,7 @@ void Client::step(float dtime)
*/ */
{ {
int num_processed_meshes = 0; int num_processed_meshes = 0;
std::vector<v3s16> blocks_to_ack;
while (!m_mesh_update_thread.m_queue_out.empty()) while (!m_mesh_update_thread.m_queue_out.empty())
{ {
num_processed_meshes++; num_processed_meshes++;
@ -513,14 +514,18 @@ void Client::step(float dtime)
m_minimap->addBlock(r.p, minimap_mapblock); m_minimap->addBlock(r.p, minimap_mapblock);
if (r.ack_block_to_server) { if (r.ack_block_to_server) {
/* if (blocks_to_ack.size() == 255) {
Acknowledge block sendGotBlocks(blocks_to_ack);
[0] u8 count blocks_to_ack.clear();
[1] v3s16 pos_0 }
*/
sendGotBlocks(r.p); blocks_to_ack.emplace_back(r.p);
} }
} }
if (blocks_to_ack.size() > 0) {
// Acknowledge block(s)
sendGotBlocks(blocks_to_ack);
}
if (num_processed_meshes > 0) if (num_processed_meshes > 0)
g_profiler->graphAdd("num_processed_meshes", num_processed_meshes); g_profiler->graphAdd("num_processed_meshes", num_processed_meshes);
@ -1069,10 +1074,13 @@ void Client::sendDeletedBlocks(std::vector<v3s16> &blocks)
Send(&pkt); Send(&pkt);
} }
void Client::sendGotBlocks(v3s16 block) void Client::sendGotBlocks(const std::vector<v3s16> &blocks)
{ {
NetworkPacket pkt(TOSERVER_GOTBLOCKS, 1 + 6); NetworkPacket pkt(TOSERVER_GOTBLOCKS, 1 + 6 * blocks.size());
pkt << (u8) 1 << block; pkt << (u8) blocks.size();
for (const v3s16 &block : blocks)
pkt << block;
Send(&pkt); Send(&pkt);
} }

@ -465,7 +465,7 @@ private:
void promptConfirmRegistration(AuthMechanism chosen_auth_mechanism); void promptConfirmRegistration(AuthMechanism chosen_auth_mechanism);
void startAuth(AuthMechanism chosen_auth_mechanism); void startAuth(AuthMechanism chosen_auth_mechanism);
void sendDeletedBlocks(std::vector<v3s16> &blocks); void sendDeletedBlocks(std::vector<v3s16> &blocks);
void sendGotBlocks(v3s16 block); void sendGotBlocks(const std::vector<v3s16> &blocks);
void sendRemovedSounds(std::vector<s32> &soundList); void sendRemovedSounds(std::vector<s32> &soundList);
// Helper function // Helper function