diff --git a/doc/en/scripting/builtins/libassets.md b/doc/en/scripting/builtins/libassets.md index b39239a5b..6451995b9 100644 --- a/doc/en/scripting/builtins/libassets.md +++ b/doc/en/scripting/builtins/libassets.md @@ -5,6 +5,13 @@ A library for working with audio/visual assets. ## Functions ```lua +-- Requests background texture loading +assets.request_texture( + -- Image file + filename: string, + -- Texture name after loading + name: string, +) -- Loads a texture assets.load_texture( -- Array of bytes of an image file diff --git a/doc/ru/scripting/builtins/libassets.md b/doc/ru/scripting/builtins/libassets.md index f80b710ad..c63c7aebe 100644 --- a/doc/ru/scripting/builtins/libassets.md +++ b/doc/ru/scripting/builtins/libassets.md @@ -5,6 +5,14 @@ ## Функции ```lua +-- Запрашивает фоновую загрузку текстуры +assets.request_texture( + -- Файла изображения + filename: string, + -- Имя текстуры после загрузки + name: string, +) + -- Загружает текстуру assets.load_texture( -- Массив байт файла изображения @@ -33,4 +41,4 @@ assets.to_canvas( -- так и находящиеся в атласе ("атлас:имя_текстуры"). name: string ) -> Canvas -``` \ No newline at end of file +``` diff --git a/src/logic/scripting/lua/libs/libassets.cpp b/src/logic/scripting/lua/libs/libassets.cpp index 6a16c3cfd..0921f1b9c 100644 --- a/src/logic/scripting/lua/libs/libassets.cpp +++ b/src/logic/scripting/lua/libs/libassets.cpp @@ -1,6 +1,7 @@ #include "api_lua.hpp" #include "assets/Assets.hpp" +#include "assets/AssetsLoader.hpp" #include "coders/png.hpp" #include "coders/vcm.hpp" #include "debug/Logger.hpp" @@ -24,6 +25,14 @@ static void load_texture( } } +static int l_request_texture(lua::State* L) { + std::string filename = lua::require_string(L, 1); + std::string alias = lua::require_string(L, 2); + auto& loader = engine->acquireBackgroundLoader(); + loader.add(AssetType::TEXTURE, filename, alias); + return 0; +} + static int l_load_texture(lua::State* L) { if (lua::isstring(L, 3) && lua::require_lstring(L, 3) != "png") { throw std::runtime_error("unsupportd image format"); @@ -108,6 +117,7 @@ static int l_to_canvas(lua::State* L) { } const luaL_Reg assetslib[] = { + {"request_texture", lua::wrap}, {"load_texture", lua::wrap}, {"parse_model", lua::wrap}, {"to_canvas", lua::wrap},