libentities: add get_hitbox that returns a hitbox from entity definition

This commit is contained in:
REDxEYE 2024-10-29 19:38:18 +03:00
parent 803981e2a8
commit 7f5bc41835
3 changed files with 23 additions and 0 deletions

View File

@ -50,6 +50,11 @@ entities.get_all_in_box(pos: vec3, size: vec3) -> array<int>
-- center - center of the area
-- radius - radius of the area
entities.get_all_in_radius(center: vec3, radius: number) -> array<int>
-- Returns a float array representing hitbox size from entity definition
entities.get_hitbox(uid: int)->array<int>
```
```lua

View File

@ -50,6 +50,9 @@ entities.get_all_in_box(pos: vec3, size: vec3) -> array<int>
-- center - центр области
-- radius - радиус области
entities.get_all_in_radius(center: vec3, radius: number) -> array<int>
-- Возвращает массив флотов хитбокса из определения сущности
entities.get_hitbox(uid: int)->array<int>
```
```lua

View File

@ -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<l_get_def>},
{"defs_count", lua::wrap<l_defs_count>},
{"spawn", lua::wrap<l_spawn>},
{"get_hitbox", lua::wrap<l_get_hitbox>},
{"despawn", lua::wrap<l_despawn>},
{"get_skeleton", lua::wrap<l_get_skeleton>},
{"set_skeleton", lua::wrap<l_set_skeleton>},