diff --git a/res/layouts/code_editor.xml.lua b/res/layouts/code_editor.xml.lua
index 4e6c68d4..733fa903 100644
--- a/res/layouts/code_editor.xml.lua
+++ b/res/layouts/code_editor.xml.lua
@@ -110,7 +110,7 @@ function unlock_access()
end
local function reload_model(filename, name)
- assets.parse_model("xml", document.editor.text, name)
+ assets.parse_model(file.ext(filename), document.editor.text, name)
end
function run_current_file()
diff --git a/res/layouts/console.xml b/res/layouts/console.xml
index 756459de..3772d240 100644
--- a/res/layouts/console.xml
+++ b/res/layouts/console.xml
@@ -33,5 +33,4 @@
onup="on_history_up()"
ondown="on_history_down()">
-
diff --git a/src/assets/assetload_funcs.cpp b/src/assets/assetload_funcs.cpp
index 88dd66bd..d865cc1a 100644
--- a/src/assets/assetload_funcs.cpp
+++ b/src/assets/assetload_funcs.cpp
@@ -381,7 +381,8 @@ assetload::postfunc assetload::model(
auto text = io::read_string(path);
try {
- auto model = vcm::parse(path.string(), text).release();
+ auto model = vcm::parse(path.string(), text, path.extension() == ".xml")
+ .release();
return [=](Assets* assets) {
request_textures(loader, *model);
assets->store(std::unique_ptr(model), name);
diff --git a/src/coders/vcm.cpp b/src/coders/vcm.cpp
index 9b564787..337d721f 100644
--- a/src/coders/vcm.cpp
+++ b/src/coders/vcm.cpp
@@ -163,11 +163,11 @@ static std::unique_ptr load_model(const xmlelement& root) {
}
std::unique_ptr vcm::parse(
- std::string_view file, std::string_view src
+ std::string_view file, std::string_view src, bool usexml
) {
try {
- auto doc = io::path(std::string(file)).extension() == ".xml"
- ? xml::parse(file, src) : xml::parse_vcm(file, src, "model");
+ auto doc =
+ usexml ? xml::parse(file, src) : xml::parse_vcm(file, src, "model");
const auto& root = *doc->getRoot();
if (root.getTag() != "model") {
throw std::runtime_error(
diff --git a/src/coders/vcm.hpp b/src/coders/vcm.hpp
index 6f239604..e0629de1 100644
--- a/src/coders/vcm.hpp
+++ b/src/coders/vcm.hpp
@@ -8,5 +8,7 @@ namespace model {
}
namespace vcm {
- std::unique_ptr parse(std::string_view file, std::string_view src);
+ std::unique_ptr parse(
+ std::string_view file, std::string_view src, bool usexml
+ );
}
diff --git a/src/logic/scripting/lua/libs/libassets.cpp b/src/logic/scripting/lua/libs/libassets.cpp
index 047b6330..809480ee 100644
--- a/src/logic/scripting/lua/libs/libassets.cpp
+++ b/src/logic/scripting/lua/libs/libassets.cpp
@@ -55,7 +55,9 @@ static int l_parse_model(lua::State* L) {
auto name = lua::require_string(L, 3);
if (format == "xml" || format == "vcm") {
- engine->getAssets()->store(vcm::parse(name, string), name);
+ engine->getAssets()->store(
+ vcm::parse(name, string, format == "xml"), name
+ );
} else {
throw std::runtime_error("unknown format " + util::quote(std::string(format)));
}