From 280e1a2512c71ef0d38643d8b245c40b285879ae Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sat, 31 Mar 2012 12:30:11 +0300 Subject: Allow group:groupname in ABM definition and implement minetest.hash_node_position() --- src/environment.cpp | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) (limited to 'src/environment.cpp') 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::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 contents_s = abm->getTriggerContents(); for(std::set::iterator - i = contents_s.begin(); i != contents_s.end(); i++){ - content_t c = ndef->getId(*i); - if(c == CONTENT_IGNORE) - continue; - std::map >::iterator j; - j = m_aabms.find(c); - if(j == m_aabms.end()){ - std::list aabmlist; - m_aabms[c] = aabmlist; + i = contents_s.begin(); i != contents_s.end(); i++) + { + std::set ids; + ndef->getIds(*i, ids); + for(std::set::const_iterator k = ids.begin(); + k != ids.end(); k++) + { + content_t c = *k; + std::map >::iterator j; j = m_aabms.find(c); + if(j == m_aabms.end()){ + std::list aabmlist; + m_aabms[c] = aabmlist; + j = m_aabms.find(c); + } + j->second.push_back(aabm); } - j->second.push_back(aabm); } } } -- cgit v1.2.3