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.6 by gwlarson, Fri Oct 9 17:34:00 1998 UTC vs.
Revision 3.9 by gwlarson, Thu Dec 31 12:57:06 1998 UTC

# Line 416 | Line 416 | memerr:
416   }
417  
418  
419 < static int
419 > static
420   cmderror(cn, err)               /* report command error */
421   int     cn;
422   char    *err;
423   {
424          sprintf(errmsg, "%s: %s", rhdcmd[cn], err);
425          error(COMMAND, errmsg);
426        return(cn);
426   }
427  
428  
# Line 432 | Line 431 | dobj_command(cmd, args)                /* run object display command
431   char    *cmd;
432   register char   *args;
433   {
434 +        int     somechange = 0;
435          int     cn, na, doxfm;
436          register int    nn;
437          char    *alist[MAXAC+1], *nm;
# Line 459 | Line 459 | register char  *args;
459                          dobj_load(alist[0], alist[0]);
460                  else if (na == 2)
461                          dobj_load(alist[0], alist[1]);
462 <                else
463 <                        return(cmderror(cn, "need octree [name]"));
462 >                else {
463 >                        cmderror(cn, "need octree [name]");
464 >                        return(0);
465 >                }
466                  break;
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 476 | Line 478 | register char  *args;
478                  } else {
479                          nm = curname; nn = 0;
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);
481 >                if (cn == DO_MOVE && nn >= na) {
482 >                        cmderror(cn, "missing transform");
483 >                        return(0);
484 >                }
485 >                somechange += dobj_xform(nm, cn==DO_MOVE, na-nn, alist+nn);
486                  break;
487          case DO_UNMOVE:                         /* undo last transform */
488 <                dobj_unmove();
488 >                somechange += dobj_unmove();
489                  break;
490          case DO_OBJECT:                         /* print object statistics */
491                  if (dobj_putstats(na ? alist[0] : curname, sstdout))
# Line 495 | Line 499 | register char  *args;
499                                  break;
500                  switch (nn) {
501                  case 0:
502 <                        return(cmderror(cn, "need new object name"));
502 >                        cmderror(cn, "need new object name");
503 >                        return(0);
504                  case 1:
505                          nm = curname;
506                          break;
# Line 508 | Line 513 | register char  *args;
513                  if (!dobj_dup(nm, alist[nn-1]))
514                          break;
515                  if (na > nn)
516 <                        dobj_xform(curname, 1, na-nn, alist+nn);
516 >                        somechange += dobj_xform(curname, 1, na-nn, alist+nn);
517                  else
518                          curobj->drawcode = DO_HIDE;
519                  savedxf(curobj);
# Line 518 | Line 523 | register char  *args;
523          case DO_HIDE:
524                  if (na > 1) goto toomany;
525                  dobj_lighting(na ? alist[0] : curname, cn);
526 +                somechange++;
527                  break;
528          default:
529                  error(CONSISTENCY, "bad command id in dobj_command");
530          }
531 <        dev_view(&odev.v);                      /* redraw */
526 <        return(cn);
531 >        return(somechange);
532   toomany:
533          return(cmderror(cn, "too many arguments"));
534   }
# Line 571 | Line 576 | char   *oct, *nam;
576          op->xfav[op->xfac=0] = NULL;
577                                          /* load octree into display list */
578          dolights = 0;
579 +        domats = 1;
580          op->listid = rgl_octlist(fpath, op->center, &op->radius);
581                                          /* start rtrace */
582          rtargv[RTARGC-1] = fpath;
# Line 866 | Line 872 | FVECT   rorg, rdir;
872   }
873  
874  
875 + int
876   dobj_render()                   /* render our objects in OpenGL */
877   {
878 +        int     nrendered = 0;
879          GLboolean       normalizing;
880          GLfloat vec[4];
881          FVECT   v1;
# Line 878 | Line 886 | dobj_render()                  /* render our objects in OpenGL */
886                  if (op->drawcode != DO_HIDE)
887                          break;
888          if (op == NULL)
889 <                return(1);
889 >                return(0);
890                                          /* set up general rendering params */
891          glGetBooleanv(GL_NORMALIZE, &normalizing);
892          glPushAttrib(GL_LIGHTING_BIT|GL_TRANSFORM_BIT|GL_ENABLE_BIT|
# Line 964 | Line 972 | dobj_render()                  /* render our objects in OpenGL */
972                  }
973                                          /* render the display list */
974                  glCallList(op->listid);
975 +                nrendered++;
976                                          /* restore matrix */
977                  if (op->xfac) {
978                          glMatrixMode(GL_MODELVIEW);
# Line 981 | Line 990 | dobj_render()                  /* render our objects in OpenGL */
990          }
991          glPopAttrib();                  /* restore rendering params */
992          rgl_checkerr("rendering objects in dobj_render");
993 <        return(1);
993 >        return(nrendered);
994   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines