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