Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void read(char nomeObjeto[])
- {
- char op;
- this->tipo = 0;
- int v;
- int p1, p2, p3;
- double x, y, z;
- FILE * objeto = freopen(nomeObjeto, "r", stdin);
- if (objeto != NULL)
- {
- while (fscanf(objeto, " %c", &op) > 0 && !feof(objeto))
- {
- if (op == 'v')
- {
- fscanf(objeto, "%c", &op);
- if (op == ' ')
- {
- fscanf(objeto, "%lf %lf %lf", &x, &y, &z);
- this->vertices.push_back(ponto(x, y, z));
- }
- else if (op == 't')
- {
- fscanf(objeto, "%lf %lf %lf", &x, &y, &z);
- this->texturas.push_back(ponto(x, y, z));
- }
- else if (op == 'n')
- {
- fscanf(objeto, "%lf %lf %lf", &x, &y, &z);
- this->normais.push_back(ponto(x, y, z));
- }
- }
- else if (op == 'f')
- {
- this->faces.push_back(face());
- fscanf(objeto, "%c", &op);
- while (op == ' ' && !feof(objeto))
- {
- if (fscanf(objeto, "%d", &v)>0)
- {
- v--;
- this->faces.back().vertice.push_back(v);
- fscanf(objeto, "%c", &op);
- if (op == '/')
- {
- if (fscanf(objeto, "%d", &v) > 0)
- {
- v--;
- this->faces.back().textura.push_back(v);
- fscanf(objeto, "%c", &op);
- fscanf(objeto, "%d", &v);
- v--;
- this->faces.back().normal.push_back(v);
- if (this->tipo < 2)
- this->tipo = 2;
- fscanf(objeto, "%c", &op);
- }
- else
- {
- fscanf(objeto, "%c", &op);
- fscanf(objeto, "%d", &v);
- v--;
- this->faces.back().normal.push_back(v);
- if (this->tipo < 1)
- this->tipo = 1;
- fscanf(objeto, "%c", &op);
- }
- }
- }
- else
- op = '\n';
- }
- }
- else
- {
- printf("aqui\n");
- op = fgetc(objeto);
- while (op != '\n' && !feof(objeto))
- op = fgetc(objeto);
- //Essa verificação motivou o uso do FILE, que acabou sendo uma boa ideia no final.
- }
- }
- fclose(objeto);
- }
- else
- {
- cout << "Nao foi possivel abrir o arquivo" << endl;
- exit(EXIT_FAILURE);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement