From 4403df78d99d871632f0e6a6a94ed3901d868199 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 26 Apr 2026 17:38:48 +0300 Subject: [PATCH 1/2] feat: bytearray support in gfx.posteffects.set_array --- doc/en/scripting/builtins/libgfx-posteffects.md | 4 ++-- doc/ru/scripting/builtins/libgfx-posteffects.md | 6 +++--- src/logic/scripting/lua/lua_util.hpp | 5 ++++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/doc/en/scripting/builtins/libgfx-posteffects.md b/doc/en/scripting/builtins/libgfx-posteffects.md index c624d557c..5e36683c4 100644 --- a/doc/en/scripting/builtins/libgfx-posteffects.md +++ b/doc/en/scripting/builtins/libgfx-posteffects.md @@ -41,8 +41,8 @@ gfx.posteffects.set_array( slot: int, -- parameter (array) name name: str - -- data string (use Bytearray_as_string function) - data: str + -- data + data: Bytearray ) -- Example of filling an array `#param vec3 u_arrayName[64]`: diff --git a/doc/ru/scripting/builtins/libgfx-posteffects.md b/doc/ru/scripting/builtins/libgfx-posteffects.md index 01c13d888..64fb6c064 100644 --- a/doc/ru/scripting/builtins/libgfx-posteffects.md +++ b/doc/ru/scripting/builtins/libgfx-posteffects.md @@ -41,8 +41,8 @@ gfx.posteffects.set_array( slot: int, -- имя параметра (массива) name: string - -- строка данных (используйте функцию Bytearray_as_string) - data: string + -- данные + data: Bytearray ) -- Пример заполнения массива `#param vec3 u_имяМассива[64]`: @@ -54,4 +54,4 @@ for i = 0, 63 do Bytearray.append(buffer, byteutil.pack("fff", x, y, z)) end gfx.posteffects.set_array(slot, "u_имяМассива", Bytearray_as_string(buffer)) -``` \ No newline at end of file +``` diff --git a/src/logic/scripting/lua/lua_util.hpp b/src/logic/scripting/lua/lua_util.hpp index f87853256..236eaf401 100644 --- a/src/logic/scripting/lua/lua_util.hpp +++ b/src/logic/scripting/lua/lua_util.hpp @@ -770,7 +770,10 @@ namespace lua { } inline std::string_view bytearray_as_string(lua::State* L, int idx) { - lua::pushvalue(L, idx); + if (lua::type(L, idx) == LUA_TSTRING) { + return lua::tolstring(L, idx); + } + lua::pushvalue(L, idx); lua::requireglobal(L, "Bytearray_as_string"); lua::pushvalue(L, -2); lua::call(L, 1, 1); From 0cec5057f772e9f82ff11cc1a20a78cba47cd5bf Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 26 Apr 2026 18:35:56 +0300 Subject: [PATCH 2/2] do it completely --- src/logic/scripting/lua/libs/libposteffects.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/logic/scripting/lua/libs/libposteffects.cpp b/src/logic/scripting/lua/libs/libposteffects.cpp index 6eedaa6c8..3d714203b 100644 --- a/src/logic/scripting/lua/libs/libposteffects.cpp +++ b/src/logic/scripting/lua/libs/libposteffects.cpp @@ -65,7 +65,7 @@ static int l_set_params(lua::State* L) { static int l_set_array(lua::State* L) { size_t index = static_cast(lua::tointeger(L, 1)); auto key = lua::require_string(L, 2); - auto data = lua::require_lstring(L, 3); + auto data = lua::bytearray_as_string(L, 3); auto effect = post_processing->getEffect(index); if (effect == nullptr) { return 0;