diff --git a/doc/en/scripting/builtins/libentities.md b/doc/en/scripting/builtins/libentities.md index cb46a3a5..6a024aee 100644 --- a/doc/en/scripting/builtins/libentities.md +++ b/doc/en/scripting/builtins/libentities.md @@ -50,6 +50,11 @@ entities.get_all_in_box(pos: vec3, size: vec3) -> array -- center - center of the area -- radius - radius of the area entities.get_all_in_radius(center: vec3, radius: number) -> array + + +-- Returns a float array representing hitbox size from entity definition +entities.get_hitbox(uid: int)->array + ``` ```lua diff --git a/doc/ru/scripting/builtins/libentities.md b/doc/ru/scripting/builtins/libentities.md index 1e0cc6c0..b1e30338 100644 --- a/doc/ru/scripting/builtins/libentities.md +++ b/doc/ru/scripting/builtins/libentities.md @@ -50,6 +50,9 @@ entities.get_all_in_box(pos: vec3, size: vec3) -> array -- center - центр области -- radius - радиус области entities.get_all_in_radius(center: vec3, radius: number) -> array + +-- Возвращает массив флотов хитбокса из определения сущности +entities.get_hitbox(uid: int)->array ``` ```lua diff --git a/src/logic/scripting/lua/libs/libentity.cpp b/src/logic/scripting/lua/libs/libentity.cpp index b6fef820..225dd918 100644 --- a/src/logic/scripting/lua/libs/libentity.cpp +++ b/src/logic/scripting/lua/libs/libentity.cpp @@ -53,6 +53,20 @@ static int l_get_def(lua::State* L) { return 0; } +static int l_get_hitbox(lua::State* L){ + if (auto def = require_entity_def(L)) { + lua::createtable(L, 3, 0); + lua::pushnumber(L, def->hitbox.x); + lua::rawseti(L, 1); + lua::pushnumber(L, def->hitbox.y); + lua::rawseti(L, 2); + lua::pushnumber(L, def->hitbox.z); + lua::rawseti(L, 3); + return 1; + } + return 0; +} + static int l_spawn(lua::State* L) { auto level = controller->getLevel(); auto defname = lua::tostring(L, 1); @@ -214,6 +228,7 @@ const luaL_Reg entitylib[] = { {"get_def", lua::wrap}, {"defs_count", lua::wrap}, {"spawn", lua::wrap}, + {"get_hitbox", lua::wrap}, {"despawn", lua::wrap}, {"get_skeleton", lua::wrap}, {"set_skeleton", lua::wrap},