diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-11-15 20:32:56 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-11-29 19:13:44 +0200 |
commit | 6da8cb00e27106221e013aa6d93965b95e630a18 (patch) | |
tree | c463f02b5ecced9e18672b6b8b9c923b1f2384d0 /src/client.cpp | |
parent | eed727c61b51f46f6d172c56ecd26a3b1752d449 (diff) | |
download | minetest-6da8cb00e27106221e013aa6d93965b95e630a18.tar.gz minetest-6da8cb00e27106221e013aa6d93965b95e630a18.tar.bz2 minetest-6da8cb00e27106221e013aa6d93965b95e630a18.zip |
Node definitions transfer
Diffstat (limited to 'src/client.cpp')
-rw-r--r-- | src/client.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/client.cpp b/src/client.cpp index 7093a5190..4d9233d66 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -1507,7 +1507,8 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id) } else if(command == TOCLIENT_TOOLDEF) { - infostream<<"Client: Received tool definitions"<<std::endl; + infostream<<"Client: Received tool definitions: packet size: " + <<datasize<<std::endl; std::string datastring((char*)&data[2], datasize-2); std::istringstream is(datastring, std::ios_base::binary); @@ -1589,6 +1590,31 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id) event.type = CE_TEXTURES_UPDATED; m_client_event_queue.push_back(event); } + else if(command == TOCLIENT_NODEDEF) + { + infostream<<"Client: Received node definitions: packet size: " + <<datasize<<std::endl; + + std::string datastring((char*)&data[2], datasize-2); + std::istringstream is(datastring, std::ios_base::binary); + + // Stop threads while updating content definitions + m_mesh_update_thread.stop(); + + std::istringstream tmp_is(deSerializeLongString(is), std::ios::binary); + m_nodedef->deSerialize(tmp_is, this); + + // Update texture atlas + if(g_settings->getBool("enable_texture_atlas")) + m_tsrc->buildMainAtlas(this); + + // Update node textures + m_nodedef->updateTextures(m_tsrc); + + // Resume threads + m_mesh_update_thread.setRun(true); + m_mesh_update_thread.Start(); + } else { infostream<<"Client: Ignoring unknown command " |