diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2020-10-18 14:16:18 +0200 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2020-10-18 14:16:18 +0200 |
commit | 28a560684b9b9048f8436583805f3f733d7ce829 (patch) | |
tree | 7615dddb67a38982d10660c751ef4db229a702f8 /src/script/lua_api/l_client.cpp | |
parent | c1aea404b862256e6bf9316eeb8f32c72b78a4c2 (diff) | |
download | dragonfireclient-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.cpp | 22 |
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); } |