From ffb0ab2f053529b39a2b49610d0c086de38a8618 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sat, 13 Jul 2024 01:51:50 +0300 Subject: [PATCH] add skeleton:get_texture --- doc/ru/scripting/ecs.md | 2 +- res/modules/internal/stdcomp.lua | 1 + src/logic/scripting/lua/lib__skeleton.cpp | 13 +++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/doc/ru/scripting/ecs.md b/doc/ru/scripting/ecs.md index 137d340b..a0fba048 100644 --- a/doc/ru/scripting/ecs.md +++ b/doc/ru/scripting/ecs.md @@ -110,7 +110,7 @@ body:set_body_type(type: str) ### Skeleton -Компонент отвечает за скелет сущности. См. [риггинг](rigging.md). +Компонент отвечает за скелет сущности. См. [риггинг](../rigging.md). ```lua -- Сокращение diff --git a/res/modules/internal/stdcomp.lua b/res/modules/internal/stdcomp.lua index 0609cd00..df36bfbe 100644 --- a/res/modules/internal/stdcomp.lua +++ b/res/modules/internal/stdcomp.lua @@ -41,6 +41,7 @@ local Skeleton = {__index={ get_model=function(self, i) return __skeleton.get_model(self.eid, i) end, get_matrix=function(self, i) return __skeleton.get_matrix(self.eid, i) end, set_matrix=function(self, i, m) return __skeleton.set_matrix(self.eid, i, m) end, + get_texture=function(self, s) return __skeleton.get_texture(self.eid, s) end, set_texture=function(self, s, s2) return __skeleton.set_texture(self.eid, s, s2) end, }} diff --git a/src/logic/scripting/lua/lib__skeleton.cpp b/src/logic/scripting/lua/lib__skeleton.cpp index b2514ffd..646a5214 100644 --- a/src/logic/scripting/lua/lib__skeleton.cpp +++ b/src/logic/scripting/lua/lib__skeleton.cpp @@ -39,6 +39,18 @@ static int l_set_matrix(lua::State* L) { return 0; } +static int l_get_texture(lua::State* L) { + if (auto entity = get_entity(L, 1)) { + auto& skeleton = entity->getSkeleton(); + skeleton.textures[lua::require_string(L, 2)] = lua::require_string(L, 3); + const auto& found = skeleton.textures.find(lua::require_string(L, 2)); + if (found != skeleton.textures.end()) { + return lua::pushstring(L, found->second); + } + } + return 0; +} + static int l_set_texture(lua::State* L) { if (auto entity = get_entity(L, 1)) { auto& skeleton = entity->getSkeleton(); @@ -51,6 +63,7 @@ const luaL_Reg skeletonlib [] = { {"get_model", lua::wrap}, {"get_matrix", lua::wrap}, {"set_matrix", lua::wrap}, + {"get_texture", lua::wrap}, {"set_texture", lua::wrap}, {NULL, NULL} };