summaryrefslogtreecommitdiff
path: root/src/engine/worldio.cpp
diff options
context:
space:
mode:
authorxolatile2025-07-20 12:18:48 +0200
committerxolatile2025-07-20 12:18:48 +0200
commitc46daa31f8e0339aed12736699d0003d27f1fc7e (patch)
tree11083f9c5eced31cf246c5feadc2c96d66e165cb /src/engine/worldio.cpp
parente9ad09c58820b31743251f793f30e5d4d49a0dca (diff)
downloadxolatile-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.cpp102
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