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)
{}
TimeTaker timer2("Client::addNode(): updateMeshes");
//TimeTaker timer2("Client::addNode(): updateMeshes");
for(core::map<v3s16, MapBlock * >::Iterator
i = modified_blocks.getIterator();
i.atEnd() == false; i++)
{
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:
-------------
- 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:
--------------
@ -162,7 +167,7 @@ TODO: Make fetching sector's blocks more efficient when rendering
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
animating them is easier.
@ -190,6 +195,10 @@ SUGG: Add a "description" field to InventoryList and show it in
GUIInventoryMenu
- 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:
-------