fast block ack

This commit is contained in:
darkrose 2015-06-06 19:40:37 +10:00
parent 4842b19790
commit 387057b3c6
1 changed files with 10 additions and 3 deletions

View File

@ -174,20 +174,27 @@ void * MeshUpdateThread::Thread()
}else{
MapBlock *block = m_env->getMap().getBlockNoCreateNoEx(q->p);
if (block && block->mesh) {
block->mesh->generate(q->data, m_camera_offset, &block->mesh_mutex);
if (q->ack_block_to_server) {
MeshUpdateResult r;
r.p = q->p;
r.mesh = NULL;
r.ack_block_to_server = q->ack_block_to_server;
r.ack_block_to_server = true;
m_queue_out.push_back(r);
}
block->mesh->generate(q->data, m_camera_offset, &block->mesh_mutex);
}else if (block) {
if (q->ack_block_to_server) {
MeshUpdateResult r;
r.p = q->p;
r.mesh = NULL;
r.ack_block_to_server = true;
m_queue_out.push_back(r);
}
MapBlockMesh *mesh_new = new MapBlockMesh(q->data, m_camera_offset);
MeshUpdateResult r;
r.p = q->p;
r.mesh = mesh_new;
r.ack_block_to_server = q->ack_block_to_server;
r.ack_block_to_server = false;
m_queue_out.push_back(r);
}