backported minor changes to Mesh::dump_obj from meshgen project
authorJohn Tsiombikas <nuclear@member.fsf.org>
Wed, 21 Mar 2018 11:33:00 +0000 (13:33 +0200)
committerJohn Tsiombikas <nuclear@member.fsf.org>
Wed, 21 Mar 2018 11:33:00 +0000 (13:33 +0200)
src/mesh.cc
src/mesh.h

index 6a1faa7..04d25c2 100644 (file)
@@ -1134,7 +1134,7 @@ bool Mesh::dump_obj(const char *fname) const
        return false;
 }
 
-bool Mesh::dump_obj(FILE *fp) const
+bool Mesh::dump_obj(FILE *fp, int voffs) const
 {
        if(!has_attrib(MESH_ATTR_VERTEX)) {
                return false;
@@ -1142,20 +1142,20 @@ bool Mesh::dump_obj(FILE *fp) const
 
        for(int i=0; i<(int)nverts; i++) {
                Vec4 v = get_attrib(MESH_ATTR_VERTEX, i);
-               fprintf(fp, "v %g %g %g\n", v.x, v.y, v.z);
+               fprintf(fp, "v %f %f %f\n", v.x, v.y, v.z);
        }
 
        if(has_attrib(MESH_ATTR_NORMAL)) {
                for(int i=0; i<(int)nverts; i++) {
                        Vec4 v = get_attrib(MESH_ATTR_NORMAL, i);
-                       fprintf(fp, "vn %g %g %g\n", v.x, v.y, v.z);
+                       fprintf(fp, "vn %f %f %f\n", v.x, v.y, v.z);
                }
        }
 
        if(has_attrib(MESH_ATTR_TEXCOORD)) {
                for(int i=0; i<(int)nverts; i++) {
                        Vec4 v = get_attrib(MESH_ATTR_TEXCOORD, i);
-                       fprintf(fp, "vt %g %g\n", v.x, v.y);
+                       fprintf(fp, "vt %f %f\n", v.x, v.y);
                }
        }
 
@@ -1168,14 +1168,14 @@ bool Mesh::dump_obj(FILE *fp) const
                for(int i=0; i<numtri; i++) {
                        fputc('f', fp);
                        for(int j=0; j<3; j++) {
-                               unsigned int idx = *idxptr++ + 1;
+                               unsigned int idx = *idxptr++ + 1 + voffs;
                                fprintf(fp, " %u/%u/%u", idx, idx, idx);
                        }
                        fputc('\n', fp);
                }
        } else {
                int numtri = nverts / 3;
-               unsigned int idx = 1;
+               unsigned int idx = 1 + voffs;
                for(int i=0; i<numtri; i++) {
                        fputc('f', fp);
                        for(int j=0; j<3; j++) {
index 2e43781..8291aa7 100644 (file)
@@ -243,7 +243,7 @@ public:
        bool dump(const char *fname) const;
        bool dump(FILE *fp) const;
        bool dump_obj(const char *fname) const;
-       bool dump_obj(FILE *fp) const;
+       bool dump_obj(FILE *fp, int voffs = 0) const;
 };
 
 #endif // MESH_H_