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

Comparing ray/src/common/mesh.c (file contents):
Revision 2.28 by greg, Wed Mar 1 21:51:38 2017 UTC vs.
Revision 2.29 by greg, Tue Nov 27 00:42:26 2018 UTC

# Line 510 | Line 510 | addmeshtri(                    /* add a new mesh triangle */
510                  }
511          }
512                                                  /* double link */
513 <        pp = &mp->patch[pn[2]];
513 >        pp = &mp->patch[pn[i=0]];
514 >        if (mp->patch[pn[1]].nj2tris < pp->nj2tris)
515 >                pp = &mp->patch[pn[i=1]];
516 >        if (mp->patch[pn[2]].nj2tris < pp->nj2tris)
517 >                pp = &mp->patch[pn[i=2]];
518 >        if (pp->nj2tris >= 256)
519 >                error(INTERNAL, "too many patch triangles in addmeshtri");
520          if (pp->j2tri == NULL) {
521                  pp->j2tri = (struct PJoin2 *)malloc(
522                                          256*sizeof(struct PJoin2));
523                  if (pp->j2tri == NULL)
524                          goto nomem;
525          }
520        if (pp->nj2tris >= 256)
521                error(INTERNAL, "too many patch triangles in addmeshtri");
522        pp->j2tri[pp->nj2tris].v1j = vid[0];
523        pp->j2tri[pp->nj2tris].v2j = vid[1];
524        pp->j2tri[pp->nj2tris].v3 = vid[2] & 0xff;
526          pp->j2tri[pp->nj2tris].mat = mo;
527 <        return(pn[2] << 10 | 0x300 | pp->nj2tris++);
527 >        switch (i) {
528 >        case 0:
529 >                pp->j2tri[pp->nj2tris].v3 = vid[0] & 0xff;
530 >                pp->j2tri[pp->nj2tris].v1j = vid[1];
531 >                pp->j2tri[pp->nj2tris].v2j = vid[2];
532 >                return(pn[0] << 10 | 0x300 | pp->nj2tris++);
533 >        case 1:
534 >                pp->j2tri[pp->nj2tris].v2j = vid[0];
535 >                pp->j2tri[pp->nj2tris].v3 = vid[1] & 0xff;
536 >                pp->j2tri[pp->nj2tris].v1j = vid[2];
537 >                return(pn[1] << 10 | 0x300 | pp->nj2tris++);
538 >        case 2:
539 >                pp->j2tri[pp->nj2tris].v1j = vid[0];
540 >                pp->j2tri[pp->nj2tris].v2j = vid[1];
541 >                pp->j2tri[pp->nj2tris].v3 = vid[2] & 0xff;
542 >                return(pn[2] << 10 | 0x300 | pp->nj2tris++);
543 >        }
544   nomem:
545          error(SYSTEM, "out of memory in addmeshtri");
546          return(OVOID);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines