diff --git a/src/coders/vcm.cpp b/src/coders/vcm.cpp index 308fb8462..fb405cfac 100644 --- a/src/coders/vcm.cpp +++ b/src/coders/vcm.cpp @@ -55,12 +55,12 @@ model::Model VcmModel::squashed() const { } static const std::unordered_map side_indices { - {"north", 0}, - {"south", 1}, - {"top", 2}, - {"bottom", 3}, - {"west", 4}, - {"east", 5}, + {"east", 0}, + {"west", 1}, + {"bottom", 2}, + {"top", 3}, + {"south", 4}, + {"north", 5}, }; static bool to_boolean(const xml::Attribute& attr) { @@ -306,7 +306,11 @@ static void perform_box(const xmlelement& root, ModelBuilder& builder) { texfaces[idx] = elem->attr("texture").getText(); } if (elem->has("region")) { - regions[idx].set(elem->attr("region").asVec4()); + auto region = elem->attr("region").asVec4(); + if (idx % 2 == 1) { + std::swap(region[0], region[2]); + } + regions[idx].set(region); } if (elem->has("region-scale")) { regions[idx].scale(elem->attr("region-scale").asVec2()); diff --git a/src/graphics/commons/Model.cpp b/src/graphics/commons/Model.cpp index 2de10ad30..8c2194775 100644 --- a/src/graphics/commons/Model.cpp +++ b/src/graphics/commons/Model.cpp @@ -136,18 +136,18 @@ void Mesh::addBox( const bool enabledSides[6], const glm::mat4& transform ) { - if (enabledSides[0]) // north - addPlane(pos+Z*size, X*size, Y*size, Z, uvs[0], transform); - if (enabledSides[1]) // south - addPlane(pos-Z*size, -X*size, Y*size, -Z, uvs[1], transform); - if (enabledSides[2]) // top - addPlane(pos+Y*size, X*size, -Z*size, Y, uvs[2] * glm::vec2(-1), transform); - if (enabledSides[3]) // bottom - addPlane(pos-Y*size, X*size, Z*size, -Y, uvs[3] * glm::vec2(-1, 1), transform); - if (enabledSides[4]) // west - addPlane(pos+X*size, -Z*size, Y*size, X, uvs[4], transform); - if (enabledSides[5]) // east - addPlane(pos-X*size, Z*size, Y*size, -X, uvs[5] * glm::vec2(-1, 1), transform); + if (enabledSides[0]) // east + addPlane(pos-X*size, Z*size, Y*size, -X, uvs[0], transform); + if (enabledSides[1]) // west + addPlane(pos+X*size, -Z*size, Y*size, X, uvs[1] * glm::vec2(-1, 1), transform); + if (enabledSides[2]) // bottom + addPlane(pos-Y*size, X*size, Z*size, -Y, uvs[2], transform); + if (enabledSides[3]) // top + addPlane(pos+Y*size, X*size, -Z*size, Y, uvs[3] * glm::vec2(-1, 1), transform); + if (enabledSides[4]) // south + addPlane(pos-Z*size, -X*size, Y*size, -Z, uvs[4], transform); + if (enabledSides[5]) // north + addPlane(pos+Z*size, X*size, Y*size, Z, uvs[5] * glm::vec2(-1, 1), transform); } void Mesh::scale(const glm::vec3& size) { diff --git a/src/graphics/ui/elements/ModelViewer.cpp b/src/graphics/ui/elements/ModelViewer.cpp index bfeed086d..748eabae5 100644 --- a/src/graphics/ui/elements/ModelViewer.cpp +++ b/src/graphics/ui/elements/ModelViewer.cpp @@ -83,12 +83,12 @@ static util::TextureRegion determine_texture_region( const Assets& assets, const std::string& texture ) { static std::array faces { - "blocks:dbg_north", - "blocks:dbg_south", - "blocks:dbg_top", - "blocks:dbg_bottom", - "blocks:dbg_west", "blocks:dbg_east", + "blocks:dbg_west", + "blocks:dbg_bottom", + "blocks:dbg_top", + "blocks:dbg_south", + "blocks:dbg_north", }; if (texture.length() < 2 || texture.at(0) != '$') {