From effdac2d4d5f003566439c6fac93aba8fc2a8d35 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 29 Oct 2024 21:16:25 +0300 Subject: [PATCH] add entities.def_hitbox function --- doc/en/scripting/builtins/libentities.md | 3 +++ doc/ru/scripting/builtins/libentities.md | 3 +++ src/logic/scripting/lua/libs/libentity.cpp | 9 +++++++++ src/objects/EntityDef.cpp | 5 +++-- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/doc/en/scripting/builtins/libentities.md b/doc/en/scripting/builtins/libentities.md index c0a5d260..cb46a3a5 100644 --- a/doc/en/scripting/builtins/libentities.md +++ b/doc/en/scripting/builtins/libentities.md @@ -23,6 +23,9 @@ entities.exists(uid: int) -> bool -- Returns entity definition index by UID entities.get_def(uid: int) -> int +-- Returns entity 'hitbox' property value +entities.def_hitbox(id: int) -> vec3 + -- Returns entity definition name by index (string ID). entities.def_name(id: int) -> str diff --git a/doc/ru/scripting/builtins/libentities.md b/doc/ru/scripting/builtins/libentities.md index 93275e5b..1e0cc6c0 100644 --- a/doc/ru/scripting/builtins/libentities.md +++ b/doc/ru/scripting/builtins/libentities.md @@ -26,6 +26,9 @@ entities.get_def(uid: int) -> int -- Возвращает имя определения сущности по индексу (строковый ID). entities.def_name(id: int) -> str +-- Возвращает значение свойства 'hitbox' сущности +entities.def_hitbox(id: int) -> vec3 + -- Возвращает индекс определения сущности по имени (числовой ID). entities.def_index(name: str) -> int diff --git a/src/logic/scripting/lua/libs/libentity.cpp b/src/logic/scripting/lua/libs/libentity.cpp index 845e4e96..b6fef820 100644 --- a/src/logic/scripting/lua/libs/libentity.cpp +++ b/src/logic/scripting/lua/libs/libentity.cpp @@ -34,6 +34,14 @@ static int l_def_name(lua::State* L) { } return 0; } + +static int l_def_hitbox(lua::State* L) { + if (auto def = require_entity_def(L)) { + return lua::pushvec(L, def->hitbox); + } + return 0; +} + static int l_defs_count(lua::State* L) { return lua::pushinteger(L, indices->entities.count()); } @@ -202,6 +210,7 @@ const luaL_Reg entitylib[] = { {"exists", lua::wrap}, {"def_index", lua::wrap}, {"def_name", lua::wrap}, + {"def_hitbox", lua::wrap}, {"get_def", lua::wrap}, {"defs_count", lua::wrap}, {"spawn", lua::wrap}, diff --git a/src/objects/EntityDef.cpp b/src/objects/EntityDef.cpp index 8fa9c129..4cc85871 100644 --- a/src/objects/EntityDef.cpp +++ b/src/objects/EntityDef.cpp @@ -1,4 +1,6 @@ #include "EntityDef.hpp" + + void EntityDef::cloneTo(EntityDef& dst) { dst.components = components; dst.bodyType = bodyType; @@ -8,5 +10,4 @@ void EntityDef::cloneTo(EntityDef& dst) { dst.skeletonName = skeletonName; dst.blocking = blocking; dst.save = save; - -} \ No newline at end of file +}