From 1c15f53318d49ccd148ec42b0a4345c4a8cd06bf Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Wed, 28 Dec 2011 18:18:08 +0200 Subject: Add EnvRef:get_objects_inside_radius(pos, radius) --- src/environment.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/environment.cpp') 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 ServerEnvironment::getObjectsInsideRadius(v3f pos, float radius) +{ + std::set objects; + for(core::map::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(): " -- cgit v1.2.3