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 { |