raze/polymer/build/src/util/kmd2tool.c

59 lines
1.6 KiB
C
Raw Normal View History

#if 0
kmd2tool.exe: kmd2tool.c; cl kmd2tool.c /Ox /G6fy /MD /link /opt:nowin98
del kmd2tool.obj
!if 0
#endif
#include <stdio.h>
#include <io.h>
#include <math.h>
typedef struct { float x, y, z; } point3d;
typedef struct
{ long id, vers, skinxsiz, skinysiz, framebytes; //id:"IPD2", vers:8
long numskins, numverts, numuv, numtris, numglcmds, numframes;
long ofsskins, ofsuv, ofstris, ofsframes, ofsglcmds, ofseof; //ofsskins: skin names (64 bytes each)
} md2typ;
typedef struct { point3d mul, add; } frametyp;
int main (int argc, char **argv)
{
FILE *fil;
long i, leng;
char *fbuf;
md2typ *head;
frametyp *fptr;
if (argc != 4) { puts("KMD2TOOL [MD2 in file] [MD2 out file] [z offset] by Ken Silverman"); return(0); }
if (!stricmp(argv[1],argv[2])) { puts("input&output filenames can't be same"); return(0); }
fil = fopen(argv[1],"rb"); if (!fil) { puts("error"); return(0); }
leng = filelength(_fileno(fil));
fbuf = (char *)malloc(leng); if (!fbuf) { puts("error"); return(0); }
fread(fbuf,leng,1,fil);
fclose(fil);
head = (md2typ *)fbuf;
if ((head->id != 0x32504449) && (head->vers != 8)) { free(fbuf); puts("error"); return(0); } //"IDP2"
for(i=0;i<head->numframes;i++)
{
fptr = (frametyp *)&fbuf[head->ofsframes+head->framebytes*i];
printf("frame %2d scale:%f,%f,%f offs:%f,%f,%f\n",i,fptr->mul.x,fptr->mul.y,fptr->mul.z,fptr->add.x,fptr->add.y,fptr->add.z);
fptr->add.z += atof(argv[3]);
}
fil = fopen(argv[2],"wb"); if (!fil) { puts("error"); return(0); }
fwrite(fbuf,leng,1,fil);
fclose(fil);
free(fbuf);
return(0);
}
#if 0
!endif
#endif