From 7f2d9b887da8bced0a4cb8901c2350334341af6e Mon Sep 17 00:00:00 2001 From: MihailRis Date: Fri, 16 Jan 2026 02:25:34 +0300 Subject: [PATCH] feat: 'squash' support for vec3 models --- src/assets/assetload_funcs.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/assets/assetload_funcs.cpp b/src/assets/assetload_funcs.cpp index 4110278c0..dc489755e 100644 --- a/src/assets/assetload_funcs.cpp +++ b/src/assets/assetload_funcs.cpp @@ -333,7 +333,23 @@ assetload::postfunc assetload::model( if (io::exists(path)) { auto bytes = io::read_bytes_buffer(path); auto modelVEC3 = std::make_shared(vec3::load(path.string(), bytes)); - return [loader, name, modelVEC3=std::move(modelVEC3)](Assets* assets) { + return [loader, name, cfg, modelVEC3=std::move(modelVEC3)](Assets* assets) { + if (cfg && cfg->squashed) { + model::Model fullModel; + for (auto& entry : modelVEC3->models) { + auto& vec3model = entry.second; + auto& model = vec3model.model; + model.translate(vec3model.origin); + fullModel.merge(std::move(model)); + } + request_textures(loader, fullModel); + assets->store( + std::make_unique(fullModel), + name + ); + logger.info() << "store model " << util::quote(name); + return; + } for (auto& [modelName, model] : modelVEC3->models) { request_textures(loader, model.model); std::string fullName = name;