1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Reduced server CPU usage on NodeMetadata step()s. Also furnace now cooks while no players are near it.

This commit is contained in:
Perttu Ahola 2011-05-31 20:02:55 +03:00
parent 7740425085
commit bbead93c1a
7 changed files with 163 additions and 80 deletions

View file

@ -729,6 +729,16 @@ void ServerEnvironment::step(float dtime)
// Activate stored objects
activateObjects(block);
// Run node metadata
bool changed = block->m_node_metadata.step((float)dtime_s);
if(changed)
{
MapEditEvent event;
event.type = MEET_BLOCK_NODE_METADATA_CHANGED;
event.p = p;
m_map->dispatchEvent(&event);
}
// TODO: Do something
// TODO: Implement usage of ActiveBlockModifier
@ -762,8 +772,10 @@ void ServerEnvironment::step(float dtime)
/*
Mess around in active blocks
*/
if(m_active_blocks_test_interval.step(dtime, 10.0))
if(m_active_blocks_nodemetadata_interval.step(dtime, 1.0))
{
float dtime = 1.0;
for(core::map<v3s16, bool>::Iterator
i = m_active_blocks.m_list.getIterator();
i.atEnd()==false; i++)
@ -779,7 +791,38 @@ void ServerEnvironment::step(float dtime)
// Set current time as timestamp
block->setTimestamp(m_game_time);
// Run node metadata
bool changed = block->m_node_metadata.step(dtime);
if(changed)
{
MapEditEvent event;
event.type = MEET_BLOCK_NODE_METADATA_CHANGED;
event.p = p;
m_map->dispatchEvent(&event);
}
}
}
if(m_active_blocks_test_interval.step(dtime, 10.0))
{
//float dtime = 10.0;
for(core::map<v3s16, bool>::Iterator
i = m_active_blocks.m_list.getIterator();
i.atEnd()==false; i++)
{
v3s16 p = i.getNode()->getKey();
/*dstream<<"Server: Block ("<<p.X<<","<<p.Y<<","<<p.Z
<<") being handled"<<std::endl;*/
MapBlock *block = m_map->getBlockNoCreateNoEx(p);
if(block==NULL)
continue;
// Set current time as timestamp
block->setTimestamp(m_game_time);
/*
Do stuff!
@ -801,8 +844,11 @@ void ServerEnvironment::step(float dtime)
{
v3s16 p = p0 + block->getPosRelative();
MapNode n = block->getNodeNoEx(p0);
// Test something:
// Convert mud under proper lighting to grass
/*
Test something:
Convert mud under proper lighting to grass
*/
if(n.d == CONTENT_MUD)
{
if(myrand()%20 == 0)