| 97 |
|
|
| 98 |
|
typedef void oputf_t(RAY *r); |
| 99 |
|
static oputf_t oputo, oputd, oputv, oputl, oputL, oputc, |
| 100 |
< |
oputp, oputn, oputN, oputs, oputw, oputm; |
| 100 |
> |
oputp, oputn, oputN, oputs, oputw, oputm, oputM; |
| 101 |
|
|
| 102 |
|
static void setoutput(char *vs); |
| 103 |
|
static void tranotify(OBJECT obj); |
| 274 |
|
case 'm': /* modifier */ |
| 275 |
|
*table++ = oputm; |
| 276 |
|
break; |
| 277 |
+ |
case 'M': /* material */ |
| 278 |
+ |
*table++ = oputM; |
| 279 |
+ |
break; |
| 280 |
|
} |
| 281 |
|
*table = NULL; |
| 282 |
|
} |
| 615 |
|
else |
| 616 |
|
fputs(VOIDID, stdout); |
| 617 |
|
else |
| 618 |
+ |
putchar('*'); |
| 619 |
+ |
putchar('\t'); |
| 620 |
+ |
} |
| 621 |
+ |
|
| 622 |
+ |
|
| 623 |
+ |
static void |
| 624 |
+ |
oputM( /* print material */ |
| 625 |
+ |
RAY *r |
| 626 |
+ |
) |
| 627 |
+ |
{ |
| 628 |
+ |
OBJREC *mat; |
| 629 |
+ |
|
| 630 |
+ |
if (r->ro != NULL) { |
| 631 |
+ |
if ((mat = findmaterial(r->ro)) != NULL) |
| 632 |
+ |
fputs(mat->oname, stdout); |
| 633 |
+ |
else |
| 634 |
+ |
fputs(VOIDID, stdout); |
| 635 |
+ |
} else |
| 636 |
|
putchar('*'); |
| 637 |
|
putchar('\t'); |
| 638 |
|
} |