static int _model_read_raw(model_t* m, const char* filename);
static int _model_read_obj(model_t* m, const char* filename);
static int _model_read_raw(model_t* m, const char* filename);
static int _model_read_obj(model_t* m, const char* filename);
-static int _model_try_read_cache(const char* filename, list_t** l);
-static void _model_write_cache(const char* filename, int count, list_t* l);
+static int _model_try_read_cache(const char* filename, array_t* l);
+static void _model_write_cache(const char* filename, int count, const array_t* l);
model_t* model_alloc2(const char* filename, int type)
{
model_t* m = (model_t*)mem_alloc(sizeof(model_t));
model_t* model_alloc2(const char* filename, int type)
{
model_t* m = (model_t*)mem_alloc(sizeof(model_t));
+void* model_tdata(const model_t* m, int* width, int* height)
+{
+ if (m->texture) {
+ if (width) *width = raster_width(m->texture);
+ if (height) *height = raster_height(m->texture);
+ return raster_data(m->texture);
+ }
+ return NULL;
+}
+
vert_new2((scal_t)x2, (scal_t)y2, (scal_t)z2),
vert_new2((scal_t)x3, (scal_t)y3, (scal_t)z3)
);
vert_new2((scal_t)x2, (scal_t)y2, (scal_t)z2),
vert_new2((scal_t)x3, (scal_t)y3, (scal_t)z3)
);
vert_new(*array_vec_index(v, i2)),
vert_new(*array_vec_index(v, i3))
);
vert_new(*array_vec_index(v, i2)),
vert_new(*array_vec_index(v, i3))
);
vert_new(*array_vec_index(v, i3)),
vert_new(*array_vec_index(v, i5))
);
vert_new(*array_vec_index(v, i3)),
vert_new(*array_vec_index(v, i5))
);
++m->count;
t->a.t = *array_vec_index(vt, i2);
t->b.t = *array_vec_index(vt, i4);
++m->count;
t->a.t = *array_vec_index(vt, i2);
t->b.t = *array_vec_index(vt, i4);
vert_new(*array_vec_index(v, i3)),
vert_new(*array_vec_index(v, i5))
);
vert_new(*array_vec_index(v, i3)),
vert_new(*array_vec_index(v, i5))
);
++m->count;
t->a.n = *array_vec_index(vn, i2);
t->b.n = *array_vec_index(vn, i4);
++m->count;
t->a.n = *array_vec_index(vn, i2);
t->b.n = *array_vec_index(vn, i4);
vert_new(*array_vec_index(v, i4)),
vert_new(*array_vec_index(v, i7))
);
vert_new(*array_vec_index(v, i4)),
vert_new(*array_vec_index(v, i7))
);
++m->count;
t->a.t = *array_vec_index(vt, i2);
t->b.t = *array_vec_index(vt, i5);
++m->count;
t->a.t = *array_vec_index(vt, i2);
t->b.t = *array_vec_index(vt, i5);
_DO_OR_DONE(fread(&x3, sizeof(float), 1, file));
_DO_OR_DONE(fread(&y3, sizeof(float), 1, file));
_DO_OR_DONE(fread(&z3, sizeof(float), 1, file));
_DO_OR_DONE(fread(&x3, sizeof(float), 1, file));
_DO_OR_DONE(fread(&y3, sizeof(float), 1, file));
_DO_OR_DONE(fread(&z3, sizeof(float), 1, file));
vert_new2((scal_t)x1, (scal_t)y1, (scal_t)z1),
vert_new2((scal_t)x2, (scal_t)y2, (scal_t)z2),
vert_new2((scal_t)x3, (scal_t)y3, (scal_t)z3)
);
++count;
vert_new2((scal_t)x1, (scal_t)y1, (scal_t)z1),
vert_new2((scal_t)x2, (scal_t)y2, (scal_t)z2),
vert_new2((scal_t)x3, (scal_t)y3, (scal_t)z3)
);
++count;
_DO_OR_DONE(fread(&x1, sizeof(float), 1, file));
_DO_OR_DONE(fread(&y1, sizeof(float), 1, file));
_DO_OR_DONE(fread(&z1, sizeof(float), 1, file));
_DO_OR_DONE(fread(&x1, sizeof(float), 1, file));
_DO_OR_DONE(fread(&y1, sizeof(float), 1, file));
_DO_OR_DONE(fread(&z1, sizeof(float), 1, file));
_DO_OR_DONE(fread(&x3, sizeof(float), 1, file));
_DO_OR_DONE(fread(&y3, sizeof(float), 1, file));
_DO_OR_DONE(fread(&z3, sizeof(float), 1, file));
_DO_OR_DONE(fread(&x3, sizeof(float), 1, file));
_DO_OR_DONE(fread(&y3, sizeof(float), 1, file));
_DO_OR_DONE(fread(&z3, sizeof(float), 1, file));
- t->a.n = vec_new((scal_t)x1, (scal_t)y1, (scal_t)z1);
- t->b.n = vec_new((scal_t)x2, (scal_t)y2, (scal_t)z2);
- t->c.n = vec_new((scal_t)x3, (scal_t)y3, (scal_t)z3);
+ tp->a.n = vec_new((scal_t)x1, (scal_t)y1, (scal_t)z1);
+ tp->b.n = vec_new((scal_t)x2, (scal_t)y2, (scal_t)z2);
+ tp->c.n = vec_new((scal_t)x3, (scal_t)y3, (scal_t)z3);
_DO_OR_DONE(fread(&x1, sizeof(float), 1, file));
_DO_OR_DONE(fread(&y1, sizeof(float), 1, file));
_DO_OR_DONE(fread(&x2, sizeof(float), 1, file));
_DO_OR_DONE(fread(&y2, sizeof(float), 1, file));
_DO_OR_DONE(fread(&x3, sizeof(float), 1, file));
_DO_OR_DONE(fread(&y3, sizeof(float), 1, file));
_DO_OR_DONE(fread(&x1, sizeof(float), 1, file));
_DO_OR_DONE(fread(&y1, sizeof(float), 1, file));
_DO_OR_DONE(fread(&x2, sizeof(float), 1, file));
_DO_OR_DONE(fread(&y2, sizeof(float), 1, file));
_DO_OR_DONE(fread(&x3, sizeof(float), 1, file));
_DO_OR_DONE(fread(&y3, sizeof(float), 1, file));
- t->a.t = vec_new((scal_t)x1, (scal_t)y1, S(0.0));
- t->b.t = vec_new((scal_t)x2, (scal_t)y2, S(0.0));
- t->c.t = vec_new((scal_t)x3, (scal_t)y3, S(0.0));
+ tp->a.t = vec_new((scal_t)x1, (scal_t)y1, S(0.0));
+ tp->b.t = vec_new((scal_t)x2, (scal_t)y2, S(0.0));
+ tp->c.t = vec_new((scal_t)x3, (scal_t)y3, S(0.0));
{
char* cachename = mem_strcat(".", filename);
FILE* file = fopen(cachename, "wb");
{
char* cachename = mem_strcat(".", filename);
FILE* file = fopen(cachename, "wb");
}
float x1, y1, z1, x2, y2, z2, x3, y3, z3;
}
float x1, y1, z1, x2, y2, z2, x3, y3, z3;
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;
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;