diff --git a/WFObj.cc b/WFObj.cc index 0dfe42b..184fcdd 100644 --- a/WFObj.cc +++ b/WFObj.cc @@ -265,9 +265,25 @@ vector WFObj::readFaces(const std::vector & parts) { vector faces; VertexRef refs[4]; - for (int i = 1, len = parts.size(); i < len && i <= 4; i++) + int parts_len = parts.size(); + if (parts_len < 3 || parts_len > 4) { + cerr << "WFObj: error: faces can only have 3 or 4 vertices!" << endl; + return faces; + } + for (int i = 1; i <= parts_len; i++) refs[i - 1] = readVertexRef(parts[i]); + Face f; + f.vertices[0] = refs[0]; + f.vertices[1] = refs[1]; + f.vertices[2] = refs[2]; + faces.push_back(f); + if (parts_len == 4) + { + f.vertices[0] = refs[2]; + f.vertices[1] = refs[3]; + f.vertices[2] = refs[0]; + faces.push_back(f); } return faces; }