aboutsummaryrefslogtreecommitdiff
path: root/src/script/lua_api/l_client.cpp
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2020-10-18 14:16:18 +0200
committerElias Fleckenstein <eliasfleckenstein@web.de>2020-10-18 14:16:18 +0200
commit28a560684b9b9048f8436583805f3f733d7ce829 (patch)
tree7615dddb67a38982d10660c751ef4db229a702f8 /src/script/lua_api/l_client.cpp
parentc1aea404b862256e6bf9316eeb8f32c72b78a4c2 (diff)
downloaddragonfireclient-28a560684b9b9048f8436583805f3f733d7ce829.tar.xz
Added the API additions from waspsaliva
Diffstat (limited to 'src/script/lua_api/l_client.cpp')
-rw-r--r--src/script/lua_api/l_client.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/script/lua_api/l_client.cpp b/src/script/lua_api/l_client.cpp
index 56ce6471c..9961471ff 100644
--- a/src/script/lua_api/l_client.cpp
+++ b/src/script/lua_api/l_client.cpp
@@ -30,6 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "cpp_api/s_base.h"
#include "gettext.h"
#include "l_internal.h"
+#include "l_clientobject.h"
#include "lua_api/l_nodemeta.h"
#include "gui/mainmenumanager.h"
#include "map.h"
@@ -503,6 +504,26 @@ int ModApiClient::l_drop_selected_item(lua_State *L)
return 0;
}
+// get_objects_inside_radius(pos, radius)
+int ModApiClient::l_get_objects_inside_radius(lua_State *L)
+{
+ ClientEnvironment &env = getClient(L)->getEnv();
+
+ v3f pos = checkFloatPos(L, 1);
+ float radius = readParam<float>(L, 2) * BS;
+
+ std::vector<DistanceSortedActiveObject> objs;
+ env.getActiveObjects(pos, radius, objs);
+
+ int i = 0;
+ lua_createtable(L, objs.size(), 0);
+ for (const auto obj : objs) {
+ ClientObjectRef::create(L, obj.obj); // TODO: getObjectRefOrCreate
+ lua_rawseti(L, -2, ++i);
+ }
+ return 1;
+}
+
void ModApiClient::Initialize(lua_State *L, int top)
{
API_FCT(get_current_modname);
@@ -536,4 +557,5 @@ void ModApiClient::Initialize(lua_State *L, int top)
API_FCT(get_inventory);
API_FCT(set_keypress);
API_FCT(drop_selected_item);
+ API_FCT(get_objects_inside_radius);
}