Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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
}  
Exemplo n.º 3
0
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;
}