From 407184250c0972b6500d064973551b55c3fb681f Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 25 May 2025 17:16:07 +0300 Subject: [PATCH] add assets.parse_model --- res/modules/internal/scripts_registry.lua | 2 +- src/logic/scripting/lua/libs/libassets.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/res/modules/internal/scripts_registry.lua b/res/modules/internal/scripts_registry.lua index e62be06a..db6fc321 100644 --- a/res/modules/internal/scripts_registry.lua +++ b/res/modules/internal/scripts_registry.lua @@ -56,7 +56,7 @@ local function load_models_list(packs) for _, filename in ipairs(file.list("models")) do local ext = file.ext(filename) if ext == "xml" then - registry[filename] = {type="model"} + registry[filename] = {type="model", unit=file.stem(filename)} table.insert(export.filenames, filename) end end diff --git a/src/logic/scripting/lua/libs/libassets.cpp b/src/logic/scripting/lua/libs/libassets.cpp index 6dbb305c..1e0d6f20 100644 --- a/src/logic/scripting/lua/libs/libassets.cpp +++ b/src/logic/scripting/lua/libs/libassets.cpp @@ -2,8 +2,10 @@ #include "assets/Assets.hpp" #include "coders/png.hpp" +#include "coders/vcm.hpp" #include "debug/Logger.hpp" #include "engine/Engine.hpp" +#include "graphics/commons/Model.hpp" #include "graphics/core/Texture.hpp" #include "util/Buffer.hpp" @@ -44,7 +46,21 @@ static int l_load_texture(lua::State* L) { return 0; } +static int l_parse_model(lua::State* L) { + auto format = lua::require_lstring(L, 1); + auto string = lua::require_lstring(L, 2); + auto name = lua::require_string(L, 3); + + if (format == "xml") { + engine->getAssets()->store(vcm::parse(name, string), name); + } else { + throw std::runtime_error("unknown format " + util::quote(std::string(format))); + } + return 0; +} + const luaL_Reg assetslib[] = { {"load_texture", lua::wrap}, + {"parse_model", lua::wrap}, {NULL, NULL} };