diff options
author | darkrose <lisa@ltmnet.com> | 2012-07-17 23:00:04 +1000 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2012-07-23 08:18:37 +0300 |
commit | cd6becd442a50a6e2f7129108e1c2c495f885764 (patch) | |
tree | 9f013b53ff4ec7d4df6ee26769e397f3defee268 /src/map.cpp | |
parent | 829f262c7954c4eb82eff3931d065fce8bc7809e (diff) | |
download | minetest-cd6becd442a50a6e2f7129108e1c2c495f885764.tar.gz minetest-cd6becd442a50a6e2f7129108e1c2c495f885764.tar.bz2 minetest-cd6becd442a50a6e2f7129108e1c2c495f885764.zip |
Implement node timers
Diffstat (limited to 'src/map.cpp')
-rw-r--r-- | src/map.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/map.cpp b/src/map.cpp index c6e010c45..dc1f45068 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1881,6 +1881,59 @@ void Map::removeNodeMetadata(v3s16 p) block->m_node_metadata.remove(p_rel); } +NodeTimer Map::getNodeTimer(v3s16 p) +{ + v3s16 blockpos = getNodeBlockPos(p); + v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE; + MapBlock *block = getBlockNoCreateNoEx(blockpos); + if(!block){ + infostream<<"Map::getNodeTimer(): Need to emerge " + <<PP(blockpos)<<std::endl; + block = emergeBlock(blockpos, false); + } + if(!block) + { + infostream<<"WARNING: Map::getNodeTimer(): Block not found" + <<std::endl; + return NodeTimer(); + } + NodeTimer t = block->m_node_timers.get(p_rel); + return t; +} + +void Map::setNodeTimer(v3s16 p, NodeTimer t) +{ + v3s16 blockpos = getNodeBlockPos(p); + v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE; + MapBlock *block = getBlockNoCreateNoEx(blockpos); + if(!block){ + infostream<<"Map::setNodeTimer(): Need to emerge " + <<PP(blockpos)<<std::endl; + block = emergeBlock(blockpos, false); + } + if(!block) + { + infostream<<"WARNING: Map::setNodeTimer(): Block not found" + <<std::endl; + return; + } + block->m_node_timers.set(p_rel, t); +} + +void Map::removeNodeTimer(v3s16 p) +{ + v3s16 blockpos = getNodeBlockPos(p); + v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE; + MapBlock *block = getBlockNoCreateNoEx(blockpos); + if(block == NULL) + { + infostream<<"WARNING: Map::removeNodeTimer(): Block not found" + <<std::endl; + return; + } + block->m_node_timers.remove(p_rel); +} + /* ServerMap */ |