diff options
author | Perttu Ahola <celeron55@gmail.com> | 2012-03-31 12:30:11 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2012-03-31 12:30:11 +0300 |
commit | 280e1a2512c71ef0d38643d8b245c40b285879ae (patch) | |
tree | 93b8517ea206e8ceaeeb57e7aca964fc24b35a99 /src/environment.cpp | |
parent | 1518b8f7538aad3b64a2a8a4ddf285fd22469b94 (diff) | |
download | hax-minetest-server-280e1a2512c71ef0d38643d8b245c40b285879ae.tar.gz hax-minetest-server-280e1a2512c71ef0d38643d8b245c40b285879ae.zip |
Allow group:groupname in ABM definition and implement minetest.hash_node_position()
Diffstat (limited to '')
-rw-r--r-- | src/environment.cpp | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/src/environment.cpp b/src/environment.cpp index 0c6d829f5..001b53a40 100644 --- a/src/environment.cpp +++ b/src/environment.cpp @@ -646,27 +646,30 @@ public: = abm->getRequiredNeighbors(); for(std::set<std::string>::iterator i = required_neighbors_s.begin(); - i != required_neighbors_s.end(); i++){ - content_t c = ndef->getId(*i); - if(c == CONTENT_IGNORE) - continue; - aabm.required_neighbors.insert(c); + i != required_neighbors_s.end(); i++) + { + ndef->getIds(*i, aabm.required_neighbors); } // Trigger contents std::set<std::string> contents_s = abm->getTriggerContents(); for(std::set<std::string>::iterator - i = contents_s.begin(); i != contents_s.end(); i++){ - content_t c = ndef->getId(*i); - if(c == CONTENT_IGNORE) - continue; - std::map<content_t, std::list<ActiveABM> >::iterator j; - j = m_aabms.find(c); - if(j == m_aabms.end()){ - std::list<ActiveABM> aabmlist; - m_aabms[c] = aabmlist; + i = contents_s.begin(); i != contents_s.end(); i++) + { + std::set<content_t> ids; + ndef->getIds(*i, ids); + for(std::set<content_t>::const_iterator k = ids.begin(); + k != ids.end(); k++) + { + content_t c = *k; + std::map<content_t, std::list<ActiveABM> >::iterator j; j = m_aabms.find(c); + if(j == m_aabms.end()){ + std::list<ActiveABM> aabmlist; + m_aabms[c] = aabmlist; + j = m_aabms.find(c); + } + j->second.push_back(aabm); } - j->second.push_back(aabm); } } } |