Add support for line continuations (wtf) in obj format, fixes #7974

This commit is contained in:
Juan Linietsky 2018-07-29 21:37:55 -03:00
parent 15db793ef2
commit 5a5614e8ad
1 changed files with 9 additions and 0 deletions

View File

@ -224,6 +224,13 @@ static Error _parse_obj(const String &p_path, List<Ref<Mesh> > &r_meshes, bool p
while (true) { while (true) {
String l = f->get_line().strip_edges(); String l = f->get_line().strip_edges();
while (l.length() && l[l.length() - 1] == '\\') {
String add = f->get_line().strip_edges();
l += add;
if (add == String()) {
break;
}
}
if (l.begins_with("v ")) { if (l.begins_with("v ")) {
//vertex //vertex
@ -264,10 +271,12 @@ static Error _parse_obj(const String &p_path, List<Ref<Mesh> > &r_meshes, bool p
face[0] = v[1].split("/"); face[0] = v[1].split("/");
face[1] = v[2].split("/"); face[1] = v[2].split("/");
ERR_FAIL_COND_V(face[0].size() == 0, ERR_FILE_CORRUPT); ERR_FAIL_COND_V(face[0].size() == 0, ERR_FILE_CORRUPT);
ERR_FAIL_COND_V(face[0].size() != face[1].size(), ERR_FILE_CORRUPT); ERR_FAIL_COND_V(face[0].size() != face[1].size(), ERR_FILE_CORRUPT);
for (int i = 2; i < v.size() - 1; i++) { for (int i = 2; i < v.size() - 1; i++) {
face[2] = v[i + 1].split("/"); face[2] = v[i + 1].split("/");
ERR_FAIL_COND_V(face[0].size() != face[2].size(), ERR_FILE_CORRUPT); ERR_FAIL_COND_V(face[0].size() != face[2].size(), ERR_FILE_CORRUPT);
for (int j = 0; j < 3; j++) { for (int j = 0; j < 3; j++) {