update entities library semantics
This commit is contained in:
parent
d1696eea12
commit
d285ffb2f7
@ -20,8 +20,17 @@ entities.spawn(name: str, pos: vec3, [optional] args: table)
|
||||
-- Checks the existence of an entity by a unique identifier.
|
||||
entities.exists(uid: int) -> bool
|
||||
|
||||
-- Returns entity name (string ID).
|
||||
entities.name(uid: int) -> str
|
||||
-- Returns entity definition index by UID
|
||||
entities.get_def(uid: int) -> int
|
||||
|
||||
-- Returns entity definition name by index (string ID).
|
||||
entities.def_name(id: int) -> str
|
||||
|
||||
-- Returns entity definition index by name (integer ID).
|
||||
entities.def_index(name: str) -> int
|
||||
|
||||
-- Returns number of available entity definitions
|
||||
entities.defs_count() -> int
|
||||
|
||||
-- Returns a table of all loaded entities
|
||||
entities.get_all() -> table
|
||||
|
||||
@ -20,8 +20,17 @@ entities.spawn(name: str, pos: vec3, [optional] args: table)
|
||||
-- Проверяет наличие сущности по уникальному идентификатору.
|
||||
entities.exists(uid: int) -> bool
|
||||
|
||||
-- Возвращает имя сущности (строковый ID).
|
||||
entities.name(uid: int) -> str
|
||||
-- Возвращает индекс определения сущности по UID
|
||||
entities.get_def(uid: int) -> int
|
||||
|
||||
-- Возвращает имя определения сущности по индексу (строковый ID).
|
||||
entities.def_name(id: int) -> str
|
||||
|
||||
-- Возвращает индекс определения сущности по имени (числовой ID).
|
||||
entities.def_index(name: str) -> int
|
||||
|
||||
-- Возвращает число доступных определений сущностей
|
||||
entities.defs_count() -> int
|
||||
|
||||
-- Возвращает таблицу всех загруженных сущностей
|
||||
entities.get_all() -> table
|
||||
|
||||
@ -62,7 +62,7 @@ local Entity = {__index={
|
||||
get_component=function(self, name) return self.components[name] end,
|
||||
has_component=function(self, name) return self.components[name] ~= nil end,
|
||||
get_uid=function(self) return self.eid end,
|
||||
get_name=function(self) return entities.name(self.eid) end,
|
||||
get_def=function(self) return entities.get_def(self.eid) end,
|
||||
}}
|
||||
|
||||
local entities = {}
|
||||
|
||||
@ -21,7 +21,7 @@ static Block* require_block(lua::State* L) {
|
||||
return indices->blocks.get(id);
|
||||
}
|
||||
|
||||
static int l_name(lua::State* L) {
|
||||
static int l_get_def(lua::State* L) {
|
||||
if (auto def = require_block(L)) {
|
||||
return lua::pushstring(L, def->name);
|
||||
}
|
||||
@ -382,7 +382,7 @@ static int l_raycast(lua::State* L) {
|
||||
|
||||
const luaL_Reg blocklib [] = {
|
||||
{"index", lua::wrap<l_index>},
|
||||
{"name", lua::wrap<l_name>},
|
||||
{"name", lua::wrap<l_get_def>},
|
||||
{"material", lua::wrap<l_material>},
|
||||
{"caption", lua::wrap<l_caption>},
|
||||
{"defs_count", lua::wrap<l_count>},
|
||||
|
||||
@ -12,11 +12,36 @@
|
||||
|
||||
using namespace scripting;
|
||||
|
||||
static EntityDef* require_entity_def(lua::State* L) {
|
||||
auto indices = content->getIndices();
|
||||
auto id = lua::tointeger(L, 1);
|
||||
if (static_cast<size_t>(id) >= indices->entities.count()) {
|
||||
return nullptr;
|
||||
}
|
||||
return indices->entities.get(id);
|
||||
}
|
||||
|
||||
|
||||
static int l_exists(lua::State* L) {
|
||||
return lua::pushboolean(L, get_entity(L, 1).has_value());
|
||||
}
|
||||
|
||||
static int l_name(lua::State* L) {
|
||||
static int l_def_index(lua::State* L) {
|
||||
auto name = lua::require_string(L, 1);
|
||||
return lua::pushinteger(L, content->entities.require(name).rt.id);
|
||||
}
|
||||
|
||||
static int l_def_name(lua::State* L) {
|
||||
if (auto def = require_entity_def(L)) {
|
||||
return lua::pushstring(L, def->name);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
static int l_defs_count(lua::State* L) {
|
||||
return lua::pushinteger(L, indices->entities.count());
|
||||
}
|
||||
|
||||
static int l_get_def(lua::State* L) {
|
||||
if (auto entity = get_entity(L, 1)) {
|
||||
return lua::pushstring(L, entity->getDef().name);
|
||||
}
|
||||
@ -158,7 +183,10 @@ static int l_raycast(lua::State* L) {
|
||||
|
||||
const luaL_Reg entitylib [] = {
|
||||
{"exists", lua::wrap<l_exists>},
|
||||
{"name", lua::wrap<l_name>},
|
||||
{"def_index", lua::wrap<l_def_index>},
|
||||
{"def_name", lua::wrap<l_def_name>},
|
||||
{"get_def", lua::wrap<l_get_def>},
|
||||
{"defs_count", lua::wrap<l_defs_count>},
|
||||
{"spawn", lua::wrap<l_spawn>},
|
||||
{"despawn", lua::wrap<l_despawn>},
|
||||
{"get_skeleton", lua::wrap<l_get_skeleton>},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user