diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-12-28 18:18:08 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-12-28 18:18:08 +0200 |
commit | 1c15f53318d49ccd148ec42b0a4345c4a8cd06bf (patch) | |
tree | 008ffa85e6b118dbe0a16da2f52e72e2e7b41cdf /src/environment.cpp | |
parent | 7937813c98255736c6847fe2d1302e0c6b309b04 (diff) | |
download | minetest-1c15f53318d49ccd148ec42b0a4345c4a8cd06bf.tar.xz |
Add EnvRef:get_objects_inside_radius(pos, radius)
Diffstat (limited to 'src/environment.cpp')
-rw-r--r-- | src/environment.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/environment.cpp b/src/environment.cpp index aa2b45f8f..88f1527fc 100644 --- a/src/environment.cpp +++ b/src/environment.cpp @@ -752,6 +752,23 @@ void ServerEnvironment::addActiveBlockModifier(ActiveBlockModifier *abm) m_abms.push_back(ABMWithState(abm)); } +std::set<u16> ServerEnvironment::getObjectsInsideRadius(v3f pos, float radius) +{ + std::set<u16> objects; + for(core::map<u16, ServerActiveObject*>::Iterator + i = m_active_objects.getIterator(); + i.atEnd()==false; i++) + { + ServerActiveObject* obj = i.getNode()->getValue(); + u16 id = i.getNode()->getKey(); + v3f objectpos = obj->getBasePosition(); + if(objectpos.getDistanceFrom(pos) > radius) + continue; + objects.insert(id); + } + return objects; +} + void ServerEnvironment::clearAllObjects() { infostream<<"ServerEnvironment::clearAllObjects(): " |