- _CHECK_IO(fwrite(&count, sizeof(count), 1, file));
- for (list_t* i = l; i; i = i->link) {
- tri_t* t = (tri_t*)i->val;
- _CHECK_IO(fwrite(&t->a.v.x, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->a.v.y, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->a.v.z, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->b.v.x, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->b.v.y, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->b.v.z, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->c.v.x, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->c.v.y, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->c.v.z, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->a.n.x, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->a.n.y, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->a.n.z, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->b.n.x, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->b.n.y, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->b.n.z, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->c.n.x, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->c.n.y, sizeof(float), 1, file));
- _CHECK_IO(fwrite(&t->c.n.z, sizeof(float), 1, file));
+ float x1, y1, z1, x2, y2, z2, x3, y3, z3;
+ array_it_t it = array_begin(l);
+ for (tri_t* t; t = array_it_tri_next(&it);) {
+ x1 = (float)t->a.v.x; y1 = (float)t->a.v.y; z1 = (float)t->a.v.z;
+ x2 = (float)t->b.v.x; y2 = (float)t->b.v.y; z2 = (float)t->b.v.z;
+ x3 = (float)t->c.v.x; y3 = (float)t->c.v.y; z3 = (float)t->c.v.z;
+ _DO_OR_DONE(fwrite(&x1, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&y1, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&z1, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&x2, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&y2, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&z2, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&x3, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&y3, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&z3, sizeof(float), 1, file));
+ x1 = (float)t->a.n.x; y1 = (float)t->a.n.y; z1 = (float)t->a.n.z;
+ x2 = (float)t->b.n.x; y2 = (float)t->b.n.y; z2 = (float)t->b.n.z;
+ x3 = (float)t->c.n.x; y3 = (float)t->c.n.y; z3 = (float)t->c.n.z;
+ _DO_OR_DONE(fwrite(&x1, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&y1, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&z1, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&x2, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&y2, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&z2, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&x3, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&y3, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&z3, sizeof(float), 1, file));
+ x1 = (float)t->a.t.x; y1 = (float)t->a.t.y;
+ x2 = (float)t->b.t.x; y2 = (float)t->b.t.y;
+ x3 = (float)t->c.t.x; y3 = (float)t->c.t.y;
+ _DO_OR_DONE(fwrite(&x1, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&y1, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&x2, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&y2, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&x3, sizeof(float), 1, file));
+ _DO_OR_DONE(fwrite(&y3, sizeof(float), 1, file));