Fixed OBJ loader
Former-commit-id: 492b5fa542b8744021ff11de4d0e4492a28203ac
This commit is contained in:
parent
8c942ef19b
commit
650e317c04
|
|
@ -137,42 +137,36 @@ bool NzOBJParser::Parse()
|
||||||
int& p = face.vertices[i].position;
|
int& p = face.vertices[i].position;
|
||||||
int& t = face.vertices[i].texCoord;
|
int& t = face.vertices[i].texCoord;
|
||||||
|
|
||||||
if (std::sscanf(&m_currentLine[pos], "%d/%d/%d%n", &p, &t, &n, &offset) == 3)
|
if (std::sscanf(&m_currentLine[pos], "%d/%d/%d%n", &p, &t, &n, &offset) != 3)
|
||||||
{
|
{
|
||||||
p--;
|
if (std::sscanf(&m_currentLine[pos], "%d//%d%n", &p, &n, &offset) != 2)
|
||||||
t--;
|
{
|
||||||
n--;
|
if (std::sscanf(&m_currentLine[pos], "%d/%d%n", &p, &t, &offset) != 2)
|
||||||
}
|
{
|
||||||
else if (std::sscanf(&m_currentLine[pos], "%d//%d%n", &p, &n, &offset) == 2)
|
if (std::sscanf(&m_currentLine[pos], "%d%n", &p, &offset) != 1)
|
||||||
{
|
{
|
||||||
p--;
|
#if NAZARA_UTILITY_STRICT_RESOURCE_PARSING
|
||||||
n--;
|
UnrecognizedLine();
|
||||||
t = -1;
|
#endif
|
||||||
}
|
error = true;
|
||||||
else if (std::sscanf(&m_currentLine[pos], "%d/%d%n", &p, &t, &offset) == 2)
|
break;
|
||||||
{
|
}
|
||||||
p--;
|
else
|
||||||
n = -1;
|
{
|
||||||
t--;
|
n = 0;
|
||||||
}
|
t = 0;
|
||||||
else if (std::sscanf(&m_currentLine[pos], "%d%n", &p, &offset) == 1)
|
}
|
||||||
{
|
}
|
||||||
p--;
|
else
|
||||||
n = -1;
|
n = 0;
|
||||||
t = -1;
|
}
|
||||||
}
|
else
|
||||||
else
|
t = 0;
|
||||||
{
|
|
||||||
#if NAZARA_UTILITY_STRICT_RESOURCE_PARSING
|
|
||||||
UnrecognizedLine();
|
|
||||||
#endif
|
|
||||||
error = true;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p < 0)
|
if (p < 0)
|
||||||
{
|
{
|
||||||
p += m_positions.size() + 1;
|
p += m_positions.size();
|
||||||
if (p < 0)
|
if (p < 0)
|
||||||
{
|
{
|
||||||
Error("Vertex index out of range (" + NzString::Number(p) + " < 0");
|
Error("Vertex index out of range (" + NzString::Number(p) + " < 0");
|
||||||
|
|
@ -185,7 +179,7 @@ bool NzOBJParser::Parse()
|
||||||
|
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
{
|
{
|
||||||
n += m_normals.size() + 1;
|
n += m_normals.size();
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
{
|
{
|
||||||
Error("Vertex index out of range (" + NzString::Number(n) + " < 0");
|
Error("Vertex index out of range (" + NzString::Number(n) + " < 0");
|
||||||
|
|
@ -198,7 +192,7 @@ bool NzOBJParser::Parse()
|
||||||
|
|
||||||
if (t < 0)
|
if (t < 0)
|
||||||
{
|
{
|
||||||
t += m_texCoords.size() + 1;
|
t += m_texCoords.size();
|
||||||
if (t < 0)
|
if (t < 0)
|
||||||
{
|
{
|
||||||
Error("Vertex index out of range (" + NzString::Number(t) + " < 0");
|
Error("Vertex index out of range (" + NzString::Number(t) + " < 0");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue