| 105 |
|
|
| 106 |
|
long scenedate; /* date of latest scene or object file */ |
| 107 |
|
long octreedate; /* date of octree */ |
| 108 |
+ |
long matdate; /* date of latest material file */ |
| 109 |
|
|
| 110 |
|
int explicate = 0; /* explicate variables */ |
| 111 |
|
int silent = 0; /* do work silently */ |
| 424 |
|
vnam(OCTREE), vnam(SCENE)); |
| 425 |
|
exit(1); |
| 426 |
|
} |
| 427 |
+ |
matdate = -1; |
| 428 |
+ |
if (vdef(MATERIAL)) |
| 429 |
+ |
matdate = checklast(vval(MATERIAL)); |
| 430 |
|
} |
| 431 |
|
|
| 432 |
|
|
| 565 |
|
{ |
| 566 |
|
long afdate; |
| 567 |
|
|
| 568 |
< |
if (vdef(AMBFILE)) { |
| 569 |
< |
afdate = fdate(vval(AMBFILE)); |
| 570 |
< |
if (afdate >= 0 & octreedate > afdate) |
| 571 |
< |
rmfile(vval(AMBFILE)); |
| 572 |
< |
} |
| 568 |
> |
if (!vdef(AMBFILE)) |
| 569 |
> |
return; |
| 570 |
> |
if ((afdate = fdate(vval(AMBFILE))) < 0) |
| 571 |
> |
return; |
| 572 |
> |
if (octreedate > afdate | matdate > afdate) |
| 573 |
> |
rmfile(vval(AMBFILE)); |
| 574 |
|
} |
| 575 |
|
|
| 576 |
|
|
| 804 |
|
fd = open(vval(OPTFILE), O_WRONLY|O_CREAT|O_TRUNC, 0666); |
| 805 |
|
if (fd < 0 || write(fd, ro, n) != n || close(fd) < 0) |
| 806 |
|
syserr(vval(OPTFILE)); |
| 807 |
< |
sprintf(ro, " \"^%s\"", vval(OPTFILE)); |
| 807 |
> |
sprintf(ro, " @%s", vval(OPTFILE)); |
| 808 |
|
} |
| 809 |
|
#ifdef MSDOS |
| 810 |
|
else if (n > 50) { |
| 823 |
|
po = addarg(po, "-1 -e"); |
| 824 |
|
po = addarg(po, vval(EXPOSURE)); |
| 825 |
|
} |
| 826 |
< |
if (vscale(QUALITY) == HIGH) |
| 827 |
< |
po = addarg(po, "-r .65"); |
| 826 |
> |
switch (vscale(QUALITY)) { |
| 827 |
> |
case MEDIUM: |
| 828 |
> |
po = addarg(po, "-r 1"); |
| 829 |
> |
break; |
| 830 |
> |
case HIGH: |
| 831 |
> |
po = addarg(po, "-m .25"); |
| 832 |
> |
break; |
| 833 |
> |
} |
| 834 |
|
if (vdef(PFILT)) |
| 835 |
|
po = addarg(po, vval(PFILT)); |
| 836 |
|
} |
| 1026 |
|
char pfopts[128]; |
| 1027 |
|
char vs[32], *vw; |
| 1028 |
|
int vn, mult; |
| 1029 |
+ |
long lastdate; |
| 1030 |
|
/* get pfilt options */ |
| 1031 |
|
pfiltopts(pfopts); |
| 1032 |
|
/* get resolution, reporting */ |
| 1057 |
|
else |
| 1058 |
|
badvalue(REPORT); |
| 1059 |
|
} |
| 1060 |
+ |
/* get update time */ |
| 1061 |
+ |
lastdate = octreedate > matdate ? octreedate : matdate; |
| 1062 |
|
/* do each view */ |
| 1063 |
|
vn = 0; |
| 1064 |
|
while ((vw = getview(vn++, vs)) != NULL) { |
| 1066 |
|
sprintf(vs, "%d", vn); |
| 1067 |
|
sprintf(picfile, "%s_%s.pic", vval(PICTURE), vs); |
| 1068 |
|
/* check date on picture */ |
| 1069 |
< |
if (fdate(picfile) > octreedate) |
| 1069 |
> |
if (fdate(picfile) >= lastdate) |
| 1070 |
|
continue; |
| 1071 |
|
/* build rpict command */ |
| 1072 |
|
sprintf(rawfile, "%s_%s.raw", vval(PICTURE), vs); |
| 1073 |
< |
if (fdate(rawfile) > octreedate) /* recover */ |
| 1073 |
> |
if (fdate(rawfile) >= octreedate) /* recover */ |
| 1074 |
|
sprintf(combuf, "rpict%s%s -ro %s %s", |
| 1075 |
|
rep, opts, rawfile, vval(OCTREE)); |
| 1076 |
|
else { |