Fixed import from obj files

This commit is contained in:
Enrico Turri 2019-09-09 09:56:36 +02:00
parent fec1113020
commit 9b5edbfa5f

View file

@ -159,8 +159,6 @@ static bool obj_parseline(const char *line, ObjData &data)
line = endptr;
EATWS();
}
if (*line != 0)
return false;
data.coordinates.push_back((float)x);
data.coordinates.push_back((float)y);
data.coordinates.push_back((float)z);
@ -210,15 +208,15 @@ static bool obj_parseline(const char *line, ObjData &data)
}
}
if (vertex.coordIdx < 0)
vertex.coordIdx += data.coordinates.size() / 4;
vertex.coordIdx += (int)data.coordinates.size() / 4;
else
-- vertex.coordIdx;
if (vertex.normalIdx < 0)
vertex.normalIdx += data.normals.size() / 3;
vertex.normalIdx += (int)data.normals.size() / 3;
else
-- vertex.normalIdx;
if (vertex.textureCoordIdx < 0)
vertex.textureCoordIdx += data.textureCoordinates.size() / 3;
vertex.textureCoordIdx += (int)data.textureCoordinates.size() / 3;
else
-- vertex.textureCoordIdx;
data.vertices.push_back(vertex);
@ -256,7 +254,7 @@ static bool obj_parseline(const char *line, ObjData &data)
// printf("usemtl %s\r\n", line);
EATWS();
ObjUseMtl usemtl;
usemtl.vertexIdxFirst = data.vertices.size();
usemtl.vertexIdxFirst = (int)data.vertices.size();
usemtl.name = line;
data.usemtls.push_back(usemtl);
break;
@ -272,7 +270,7 @@ static bool obj_parseline(const char *line, ObjData &data)
if (*line != 0)
return false;
ObjObject object;
object.vertexIdxFirst = data.vertices.size();
object.vertexIdxFirst = (int)data.vertices.size();
object.name = line;
data.objects.push_back(object);
break;
@ -282,7 +280,7 @@ static bool obj_parseline(const char *line, ObjData &data)
// g [group name]
// printf("group %s\r\n", line);
ObjGroup group;
group.vertexIdxFirst = data.vertices.size();
group.vertexIdxFirst = (int)data.vertices.size();
group.name = line;
data.groups.push_back(group);
break;
@ -303,7 +301,7 @@ static bool obj_parseline(const char *line, ObjData &data)
if (*line != 0)
return false;
ObjSmoothingGroup group;
group.vertexIdxFirst = data.vertices.size();
group.vertexIdxFirst = (int)data.vertices.size();
group.smoothingGroupID = g;
data.smoothingGroups.push_back(group);
break;
@ -341,7 +339,8 @@ bool objparse(const char *path, ObjData &data)
lenPrev = len - lastLine;
memmove(buf, buf + lastLine, lenPrev);
}
} catch (std::bad_alloc &ex) {
}
catch (std::bad_alloc&) {
printf("Out of memory\r\n");
}
::fclose(pFile);