diff --git a/src/coders/vcm.cpp b/src/coders/vcm.cpp index 55e36cbf..9e87f5ab 100644 --- a/src/coders/vcm.cpp +++ b/src/coders/vcm.cpp @@ -32,6 +32,9 @@ static void perform_rect(const xmlelement& root, model::Model& model) { } else { region.scale(glm::length(right), glm::length(up)); } + if (root.has("region-scale")) { + region.scale(root.attr("region-scale").asVec2()); + } auto flip = root.attr("flip", "").getText(); if (flip == "h") { @@ -87,6 +90,12 @@ static void perform_box(const xmlelement& root, model::Model& model) { if (elem->has("texture")) { texfaces[idx] = elem->attr("texture").getText(); } + if (elem->has("region")) { + regions[idx].set(elem->attr("region").asVec4()); + } + if (elem->has("region-scale")) { + regions[idx].scale(elem->attr("region-scale").asVec2()); + } } } } @@ -131,7 +140,9 @@ static std::unique_ptr load_model(const xmlelement& root) { return std::make_unique(std::move(model)); } -std::unique_ptr vcm::parse(std::string_view file, std::string_view src) { +std::unique_ptr vcm::parse( + std::string_view file, std::string_view src +) { auto doc = xml::parse(file, src); const auto& root = *doc->getRoot(); if (root.getTag() != "model") { diff --git a/src/maths/UVRegion.hpp b/src/maths/UVRegion.hpp index 09a774b9..0940cd3c 100644 --- a/src/maths/UVRegion.hpp +++ b/src/maths/UVRegion.hpp @@ -53,6 +53,10 @@ struct UVRegion { v2 = cy + h * 0.5f * y; } + void scale(const glm::vec2& vec) { + scale(vec.x, vec.y); + } + void set(const glm::vec4& vec) { u1 = vec.x; v1 = vec.y;