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); |