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

Make node timers more efficient

This commit is contained in:
Ekdohibs 2016-03-21 12:58:52 +01:00 committed by paramat
parent 27aff22a9b
commit 559dd99469
8 changed files with 125 additions and 77 deletions

View file

@ -1030,17 +1030,17 @@ void ServerEnvironment::activateBlock(MapBlock *block, u32 additional_dtime)
m_lbm_mgr.applyLBMs(this, block, stamp);
// Run node timers
std::map<v3s16, NodeTimer> elapsed_timers =
std::vector<NodeTimer> elapsed_timers =
block->m_node_timers.step((float)dtime_s);
if(!elapsed_timers.empty()){
if (!elapsed_timers.empty()) {
MapNode n;
for(std::map<v3s16, NodeTimer>::iterator
for (std::vector<NodeTimer>::iterator
i = elapsed_timers.begin();
i != elapsed_timers.end(); ++i){
n = block->getNodeNoEx(i->first);
v3s16 p = i->first + block->getPosRelative();
if(m_script->node_on_timer(p,n,i->second.elapsed))
block->setNodeTimer(i->first,NodeTimer(i->second.timeout,0));
n = block->getNodeNoEx(i->position);
v3s16 p = i->position + block->getPosRelative();
if (m_script->node_on_timer(p, n, i->elapsed))
block->setNodeTimer(NodeTimer(i->timeout, 0, i->position));
}
}
@ -1434,17 +1434,19 @@ void ServerEnvironment::step(float dtime)
MOD_REASON_BLOCK_EXPIRED);
// Run node timers
std::map<v3s16, NodeTimer> elapsed_timers =
std::vector<NodeTimer> elapsed_timers =
block->m_node_timers.step((float)dtime);
if(!elapsed_timers.empty()){
if (!elapsed_timers.empty()) {
MapNode n;
for(std::map<v3s16, NodeTimer>::iterator
for (std::vector<NodeTimer>::iterator
i = elapsed_timers.begin();
i != elapsed_timers.end(); ++i){
n = block->getNodeNoEx(i->first);
p = i->first + block->getPosRelative();
if(m_script->node_on_timer(p,n,i->second.elapsed))
block->setNodeTimer(i->first,NodeTimer(i->second.timeout,0));
i != elapsed_timers.end(); ++i) {
n = block->getNodeNoEx(i->position);
p = i->position + block->getPosRelative();
if (m_script->node_on_timer(p, n, i->elapsed)) {
block->setNodeTimer(NodeTimer(
i->timeout, 0, i->position));
}
}
}
}