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.8 by gwlarson, Wed Dec 23 17:41:14 1998 UTC vs.
Revision 3.10 by gwlarson, Fri Jan 29 15:33:36 1999 UTC

# Line 55 | Line 55 | typedef struct dobject {
55          FVECT   center;                 /* orig. object center */
56          FLOAT   radius;                 /* orig. object radius */
57          int     listid;                 /* GL display list identifier */
58 +        int     nlists;                 /* number of lists allocated */
59          int     rtp[3];                 /* associated rtrace process */
60          DLIGHTS *ol;                    /* object lights */
61          FULLXF  xfb;                    /* coordinate transform */
# Line 119 | Line 120 | register DOBJECT       *op;
120          }
121          dobjects = ohead.next;
122          if (!foundlink) {
123 <                glDeleteLists(op->listid, 1);
123 >                glDeleteLists(op->listid, op->nlists);
124                  close_process(op->rtp);
125          }
126          while (op->xfac)
# Line 416 | Line 417 | memerr:
417   }
418  
419  
420 < static int
420 > static
421   cmderror(cn, err)               /* report command error */
422   int     cn;
423   char    *err;
424   {
425          sprintf(errmsg, "%s: %s", rhdcmd[cn], err);
426          error(COMMAND, errmsg);
426        return(cn);
427   }
428  
429  
# Line 433 | Line 433 | char   *cmd;
433   register char   *args;
434   {
435          int     somechange = 0;
436        VIEW    sameview;
436          int     cn, na, doxfm;
437          register int    nn;
438          char    *alist[MAXAC+1], *nm;
# Line 461 | Line 460 | register char  *args;
460                          dobj_load(alist[0], alist[0]);
461                  else if (na == 2)
462                          dobj_load(alist[0], alist[1]);
463 <                else
464 <                        return(cmderror(cn, "need octree [name]"));
463 >                else {
464 >                        cmderror(cn, "need octree [name]");
465 >                        return(0);
466 >                }
467                  break;
468          case DO_UNLOAD:                         /* clear an object */
469                  if (na > 1) goto toomany;
# Line 478 | Line 479 | register char  *args;
479                  } else {
480                          nm = curname; nn = 0;
481                  }
482 <                if (cn == DO_MOVE && nn >= na)
483 <                        return(cmderror(cn, "missing transform"));
482 >                if (cn == DO_MOVE && nn >= na) {
483 >                        cmderror(cn, "missing transform");
484 >                        return(0);
485 >                }
486                  somechange += dobj_xform(nm, cn==DO_MOVE, na-nn, alist+nn);
487                  break;
488          case DO_UNMOVE:                         /* undo last transform */
# Line 497 | Line 500 | register char  *args;
500                                  break;
501                  switch (nn) {
502                  case 0:
503 <                        return(cmderror(cn, "need new object name"));
503 >                        cmderror(cn, "need new object name");
504 >                        return(0);
505                  case 1:
506                          nm = curname;
507                          break;
# Line 525 | Line 529 | register char  *args;
529          default:
530                  error(CONSISTENCY, "bad command id in dobj_command");
531          }
532 <        if (somechange) {
529 <                copystruct(&sameview, &odev.v); /* make 'em think new view */
530 <                dev_view(&sameview);            /* redraw */
531 <        }
532 <        return(cn);
532 >        return(somechange);
533   toomany:
534          return(cmderror(cn, "too many arguments"));
535   }
# Line 578 | Line 578 | char   *oct, *nam;
578                                          /* load octree into display list */
579          dolights = 0;
580          domats = 1;
581 <        op->listid = rgl_octlist(fpath, op->center, &op->radius);
581 >        op->listid = rgl_octlist(fpath, op->center, &op->radius, &op->nlists);
582                                          /* start rtrace */
583          rtargv[RTARGC-1] = fpath;
584          rtargv[RTARGC] = NULL;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines