glm::vec2 OBJModel::ParseOBJVec2(const std::string& line)
{
    unsigned int tokenLength = line.length();
    const char* tokenString = line.c_str();
    
    unsigned int vertIndexStart = 3;
    
    while(vertIndexStart < tokenLength)
    {
        if(tokenString[vertIndexStart] != ' ')
            break;
        vertIndexStart++;
    }
    
    unsigned int vertIndexEnd = FindNextChar(vertIndexStart, tokenString, tokenLength, ' ');
    
    float x = ParseOBJFloatValue(line, vertIndexStart, vertIndexEnd);
    
    vertIndexStart = vertIndexEnd + 1;
    vertIndexEnd = FindNextChar(vertIndexStart, tokenString, tokenLength, ' ');
    
    float y = ParseOBJFloatValue(line, vertIndexStart, vertIndexEnd);
    
    return glm::vec2(x,y);
}
Esempio n. 2
0
glm::vec3 OBJModel::ParseOBJVec3(const std::string& line)
{
  unsigned int tokenLength = static_cast<unsigned int>(line.length());
  const char* tokenString = line.c_str();

  unsigned int vertIndexStart = 2;

  while (vertIndexStart < tokenLength)
  {
    if (tokenString[vertIndexStart] != ' ')
      break;
    vertIndexStart++;
  }

  unsigned int vertIndexEnd = FindNextChar(vertIndexStart, tokenString, tokenLength, ' ');

  float x = ParseOBJFloatValue(line, vertIndexStart, vertIndexEnd);

  vertIndexStart = vertIndexEnd + 1;
  vertIndexEnd = FindNextChar(vertIndexStart, tokenString, tokenLength, ' ');

  float y = ParseOBJFloatValue(line, vertIndexStart, vertIndexEnd);

  vertIndexStart = vertIndexEnd + 1;
  vertIndexEnd = FindNextChar(vertIndexStart, tokenString, tokenLength, ' ');

  float z = ParseOBJFloatValue(line, vertIndexStart, vertIndexEnd);

  return glm::vec3(x, y, z);

  //glm::vec3(atof(tokens[1].c_str()), atof(tokens[2].c_str()), atof(tokens[3].c_str()))
}