61 lines
No EOL
1.4 KiB
C
61 lines
No EOL
1.4 KiB
C
|
|
void readmat(void)
|
|
{
|
|
char tmp[256];
|
|
int a,b,c,d;
|
|
char *p,*p0,*t;
|
|
matnum=0;
|
|
printf("Materials:\n");
|
|
while(!feof(in))
|
|
{
|
|
p0=p=getline();
|
|
if(*p==';') continue;
|
|
if(*p)
|
|
{
|
|
t=gettoken(&p);
|
|
for(a=0;a<strlen(t);a++) if(t[a]=='#') t[a]=' ';
|
|
strcpy(mat[matnum].name,t);
|
|
mat[matnum].color=0;
|
|
mat[matnum].flags=0;
|
|
mat[matnum].colorlen=1;
|
|
while(*p)
|
|
{
|
|
t=gettoken(&p);
|
|
a=toupper(*t);
|
|
switch(a)
|
|
{
|
|
case 'X' :
|
|
mat[matnum].flags|=F_2SIDE;
|
|
break;
|
|
case 'L' :
|
|
mat[matnum].colorlen=atoi(t+1);
|
|
break;
|
|
case 'G' :
|
|
mat[matnum].flags|=F_GOURAUD;
|
|
break;
|
|
default :
|
|
if(a>='0' && a<='9')
|
|
{
|
|
mat[matnum].color=atoi(t);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
switch(mat[matnum].colorlen)
|
|
{
|
|
case 32 : mat[matnum].flags|=F_SHADE32; break;
|
|
case 16 : mat[matnum].flags|=F_SHADE16; break;
|
|
case 8 : mat[matnum].flags|=F_SHADE8; break;
|
|
case 1 : break;
|
|
default : printf("ILLEGAL COLOR LENGTH>> "); break;
|
|
}
|
|
sscanf(p,"%s %i %i",mat[matnum].name,&mat[matnum].color,&mat[matnum].colorlen);
|
|
printf("%s colors:%i..%i ",mat[matnum].name,mat[matnum].color,
|
|
mat[matnum].color+mat[matnum].colorlen-1);
|
|
if(mat[matnum].flags&F_GOURAUD) printf("Gouraud ");
|
|
if(mat[matnum].flags&F_TEXTURE) printf("Texture ");
|
|
printf("\n");
|
|
matnum++;
|
|
}
|
|
}
|
|
} |