char *glueLoadfile(char *filename) { FILE *f; int length; char *data; int x; for (x=0; x<datafile_filecount; x++) { if (strcmp(filename, datafile_datatab[x].filename)==0) { f=fopen("datafile.dat", "rb"); if (!f) glueError("error opening datafile.dat"); fseek(f, datafile_datatab[x].start, SEEK_SET); data=(char *)malloc(datafile_datatab[x].len); fread(data, datafile_datatab[x].len, 1, f); fclose(f); return data; } } f=fopen(filename, "rb"); if (!f) glueErrorf("error opening file: %s", filename); fseek(f, 0, SEEK_END); length=ftell(f); fseek(f, 0, SEEK_SET); data=(char *)malloc(length); fread(data, length, 1, f); fclose(f); #if GLUE_DEVEL_MODE==1 glueNoticef("loaded from disk: %s", filename); #endif return data; }
void meshlodder(Mesh *mesh) { Mvert *mv; int x; int group, lod; if (mesh->numgroups>MAX_GROUPS) glueError("too many groups in mesh!"); loddermesh=mesh; // loop mesh groups for (group=0; group<mesh->numgroups; group++) { Object *obu=mesh->groups[group]; int vc=obu->vc; // if (obu->orig_indices) glueError("object contains splitted shit, no way jose!"); mv=malloc(sizeof(Mvert)*vc); for (x=0; x<vc; x++) { mv[x].pos=obu->vertices[x]; mv[x].parent=NPAR; } // fix parents for splitted vertices if (obu->orig_indices) { for (x=0; x<obu->linkcnt; x++) { int splitted, parent; splitted=obu->vertex_links[x*2+0]; parent=obu->vertex_links[x*2+1]; mv[splitted].parent=parent; } } // loop lods for (lod=0; lod<MAX_LOD_REDUCTION; lod++) { int killed; //int mergevertices(Mvert *data, int vc, int *indices, int fc) { killed=mergevertices(mv, vc, obu->indices, obu->fc); #ifdef DEBUG_LODDER glueNoticef("mergevertices group %i lod %i, vc=%i killed=%i", group, lod, vc, killed); #endif lodder_vertices[group][lod]=unpack_mvbuffer(mv, vc); #ifdef DEBUG_LODDER dump_obj(lodder_vertices[group][lod], vc, obu->indices, obu->fc); #endif //lodder_normals[group][lod]=calc_lodder_normals(lodder_vertices[group][lod], vc, i2, fc2); } // lod-loop free(mv); glueLoading(); } // mesh group loop }
FILE *glueDatafile_pointer(char *filename) { FILE *f; int x; for (x=0; x<datafile_filecount; x++) { if (strcmp(filename, datafile_datatab[x].filename)==0) { f=fopen("datafile.dat", "rb"); if (!f) glueError("error opening datafile.dat"); fseek(f, datafile_datatab[x].start, SEEK_SET); return f; } } f=fopen(filename, "rb"); if (!f) glueErrorf("error opening file: %s", filename); #if GLUE_DEVEL_MODE==1 glueNoticef("loaded from disk: %s", filename); #endif return f; }