Made mesh update on node addition asynchronous on client, to reduce frametime spikes

This commit is contained in:
Perttu Ahola 2011-04-06 10:28:39 +03:00
parent 212f34db82
commit e56d166337
2 changed files with 13 additions and 3 deletions

@ -1800,14 +1800,15 @@ void Client::addNode(v3s16 p, MapNode n)
catch(InvalidPositionException &e) catch(InvalidPositionException &e)
{} {}
TimeTaker timer2("Client::addNode(): updateMeshes"); //TimeTaker timer2("Client::addNode(): updateMeshes");
for(core::map<v3s16, MapBlock * >::Iterator for(core::map<v3s16, MapBlock * >::Iterator
i = modified_blocks.getIterator(); i = modified_blocks.getIterator();
i.atEnd() == false; i++) i.atEnd() == false; i++)
{ {
v3s16 p = i.getNode()->getKey(); v3s16 p = i.getNode()->getKey();
m_env.getClientMap().updateMeshes(p, m_env.getDayNightRatio()); //m_env.getClientMap().updateMeshes(p, m_env.getDayNightRatio());
addUpdateMeshTaskWithEdge(p);
} }
} }

@ -116,6 +116,11 @@ Gaming ideas:
Game content: Game content:
------------- -------------
- Glass blocks - Glass blocks
- WHen furnace is destroyed, move items to player's inventory
- Growing grass, decaying leaves
- This can be done in the active blocks I guess.
- Lots of stuff can be done in the active blocks.
- Uh, is there an active block list somewhere?
Documentation: Documentation:
-------------- --------------
@ -162,7 +167,7 @@ TODO: Make fetching sector's blocks more efficient when rendering
TODO: Flowing water animation TODO: Flowing water animation
* Combine meshes to bigger ones in ClientMap and set them EHM_STATIC SUGG: Combine meshes to bigger ones in ClientMap and set them EHM_STATIC
SUGG: Draw cubes in inventory directly with 3D drawing commands, so that SUGG: Draw cubes in inventory directly with 3D drawing commands, so that
animating them is easier. animating them is easier.
@ -190,6 +195,10 @@ SUGG: Add a "description" field to InventoryList and show it in
GUIInventoryMenu GUIInventoryMenu
- If separate menus are made for everything, this is not needed - If separate menus are made for everything, this is not needed
TODO: See what is the main slowdown when a node is added or removed
and make it asynchronous at least for other players
- It probably is updateMeshes. How 'bout making it asynchronous?
Server: Server:
------- -------