ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/hd/rhdobj.c
(Generate patch)

Comparing ray/src/hd/rhdobj.c (file contents):
Revision 3.7 by gwlarson, Fri Dec 18 11:06:45 1998 UTC vs.
Revision 3.8 by gwlarson, Wed Dec 23 17:41:14 1998 UTC

# Line 432 | Line 432 | dobj_command(cmd, args)                /* run object display command
432   char    *cmd;
433   register char   *args;
434   {
435 +        int     somechange = 0;
436 +        VIEW    sameview;
437          int     cn, na, doxfm;
438          register int    nn;
439          char    *alist[MAXAC+1], *nm;
# Line 465 | Line 467 | register char  *args;
467          case DO_UNLOAD:                         /* clear an object */
468                  if (na > 1) goto toomany;
469                  if (na && alist[0][0] == '*')
470 <                        dobj_cleanup();
470 >                        somechange += dobj_cleanup();
471                  else
472 <                        dobj_unload(na ? alist[0] : curname);
472 >                        somechange += dobj_unload(na ? alist[0] : curname);
473                  break;
474          case DO_XFORM:                          /* transform object */
475          case DO_MOVE:
# Line 478 | Line 480 | register char  *args;
480                  }
481                  if (cn == DO_MOVE && nn >= na)
482                          return(cmderror(cn, "missing transform"));
483 <                dobj_xform(nm, cn==DO_MOVE, na-nn, alist+nn);
483 >                somechange += dobj_xform(nm, cn==DO_MOVE, na-nn, alist+nn);
484                  break;
485          case DO_UNMOVE:                         /* undo last transform */
486 <                dobj_unmove();
486 >                somechange += dobj_unmove();
487                  break;
488          case DO_OBJECT:                         /* print object statistics */
489                  if (dobj_putstats(na ? alist[0] : curname, sstdout))
# Line 508 | Line 510 | register char  *args;
510                  if (!dobj_dup(nm, alist[nn-1]))
511                          break;
512                  if (na > nn)
513 <                        dobj_xform(curname, 1, na-nn, alist+nn);
513 >                        somechange += dobj_xform(curname, 1, na-nn, alist+nn);
514                  else
515                          curobj->drawcode = DO_HIDE;
516                  savedxf(curobj);
# Line 518 | Line 520 | register char  *args;
520          case DO_HIDE:
521                  if (na > 1) goto toomany;
522                  dobj_lighting(na ? alist[0] : curname, cn);
523 +                somechange++;
524                  break;
525          default:
526                  error(CONSISTENCY, "bad command id in dobj_command");
527          }
528 <        dev_view(&odev.v);                      /* redraw */
528 >        if (somechange) {
529 >                copystruct(&sameview, &odev.v); /* make 'em think new view */
530 >                dev_view(&sameview);            /* redraw */
531 >        }
532          return(cn);
533   toomany:
534          return(cmderror(cn, "too many arguments"));
# Line 571 | Line 577 | char   *oct, *nam;
577          op->xfav[op->xfac=0] = NULL;
578                                          /* load octree into display list */
579          dolights = 0;
580 +        domats = 1;
581          op->listid = rgl_octlist(fpath, op->center, &op->radius);
582                                          /* start rtrace */
583          rtargv[RTARGC-1] = fpath;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines