diff options
| author | xolatile | 2025-07-20 12:18:48 +0200 |
|---|---|---|
| committer | xolatile | 2025-07-20 12:18:48 +0200 |
| commit | c46daa31f8e0339aed12736699d0003d27f1fc7e (patch) | |
| tree | 11083f9c5eced31cf246c5feadc2c96d66e165cb /src/engine/worldio.cpp | |
| parent | e9ad09c58820b31743251f793f30e5d4d49a0dca (diff) | |
| download | xolatile-badassbug-c46daa31f8e0339aed12736699d0003d27f1fc7e.tar.xz xolatile-badassbug-c46daa31f8e0339aed12736699d0003d27f1fc7e.tar.zst | |
Most warnings fixed, ignoring one warning for now...
Diffstat (limited to 'src/engine/worldio.cpp')
| -rw-r--r-- | src/engine/worldio.cpp | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/src/engine/worldio.cpp b/src/engine/worldio.cpp index 393bfa5..ee936f0 100644 --- a/src/engine/worldio.cpp +++ b/src/engine/worldio.cpp @@ -1282,107 +1282,5 @@ void savemap(char *mname) { save_world(mname); } COMMAND(savemap, "s"); COMMAND(savecurrentmap, ""); -void writeobj(char *name) -{ - defformatstring(fname, "%s.obj", name); - stream *f = openfile(path(fname), "w"); - if(!f) return; - f->printf("# obj file of Cube 2 level\n\n"); - defformatstring(mtlname, "%s.mtl", name); - path(mtlname); - f->printf("mtllib %s\n\n", mtlname); - vector<vec> verts; - vector<vec2> texcoords; - hashtable<vec, int> shareverts(1<<16); - hashtable<vec2, int> sharetc(1<<16); - hashtable<int, vector<ivec2> > mtls(1<<8); - vector<int> usedmtl; - vec bbmin(1e16f, 1e16f, 1e16f), bbmax(-1e16f, -1e16f, -1e16f); - loopv(valist) - { - vtxarray &va = *valist[i]; - ushort *edata = NULL; - vertex *vdata = NULL; - if(!readva(&va, edata, vdata)) continue; - ushort *idx = edata; - loopj(va.texs) - { - elementset &es = va.eslist[j]; - if(usedmtl.find(es.texture) < 0) usedmtl.add(es.texture); - vector<ivec2> &keys = mtls[es.texture]; - loopk(es.length[1]) - { - int n = idx[k] - va.voffset; - const vertex &v = vdata[n]; - const vec &pos = v.pos; - const vec2 &tc = v.tc; - ivec2 &key = keys.add(); - key.x = shareverts.access(pos, verts.length()); - if(key.x == verts.length()) - { - verts.add(pos); - loopl(3) - { - bbmin[l] = min(bbmin[l], pos[l]); - bbmax[l] = max(bbmax[l], pos[l]); - } - } - key.y = sharetc.access(tc, texcoords.length()); - if(key.y == texcoords.length()) texcoords.add(tc); - } - idx += es.length[1]; - } - delete[] edata; - delete[] vdata; - } - - vec center(-(bbmax.x + bbmin.x)/2, -(bbmax.y + bbmin.y)/2, -bbmin.z); - loopv(verts) - { - vec v = verts[i]; - v.add(center); - if(v.y != floor(v.y)) f->printf("v %.3f ", -v.y); else f->printf("v %d ", int(-v.y)); - if(v.z != floor(v.z)) f->printf("%.3f ", v.z); else f->printf("%d ", int(v.z)); - if(v.x != floor(v.x)) f->printf("%.3f\n", v.x); else f->printf("%d\n", int(v.x)); - } - f->printf("\n"); - loopv(texcoords) - { - const vec2 &tc = texcoords[i]; - f->printf("vt %.6f %.6f\n", tc.x, 1-tc.y); - } - f->printf("\n"); - - usedmtl.sort(); - loopv(usedmtl) - { - vector<ivec2> &keys = mtls[usedmtl[i]]; - f->printf("g slot%d\n", usedmtl[i]); - f->printf("usemtl slot%d\n\n", usedmtl[i]); - for(int i = 0; i < keys.length(); i += 3) - { - f->printf("f"); - loopk(3) f->printf(" %d/%d", keys[i+2-k].x+1, keys[i+2-k].y+1); - f->printf("\n"); - } - f->printf("\n"); - } - delete f; - - f = openfile(mtlname, "w"); - if(!f) return; - f->printf("# mtl file of Cube 2 level\n\n"); - loopv(usedmtl) - { - VSlot &vslot = lookupvslot(usedmtl[i], false); - f->printf("newmtl slot%d\n", usedmtl[i]); - f->printf("map_Kd %s\n", vslot.slot->sts.empty() ? notexture->name : path(makerelpath("packages", vslot.slot->sts[0].name))); - f->printf("\n"); - } - delete f; -} - -COMMAND(writeobj, "s"); - #endif |
