426 |
|
/* check for repeats */ |
427 |
|
rept = 0; nrepts = 0; |
428 |
|
for (i = 0; i < nm; i++) { |
429 |
< |
if (ml[i] == sm) { |
429 |
> |
if (ml[i] == sm || !strcmp(ml[i], VOIDID)) { |
430 |
|
rept |= 1<<i; |
431 |
|
nrepts++; |
432 |
+ |
continue; |
433 |
|
} |
434 |
|
for (j = 0; j < i; j++) |
435 |
< |
if (ml[j] == ml[i]) { |
435 |
> |
if (!(rept & 1<<j) && ml[j] == ml[i]) { |
436 |
|
rept |= 1<<j; |
437 |
|
nrepts++; |
438 |
|
} |
439 |
|
} |
440 |
|
/* print antimatter and modlist */ |
441 |
< |
fprintf(fp, "\nvoid antimatter %s\n", openmod); |
441 |
> |
fprintf(fp, "\n%s antimatter %s\n", VOIDID, openmod); |
442 |
|
fprintf(fp, "%d %s", 1+nm-nrepts, sm); |
443 |
|
for (i = 0; i < nm; i++) |
444 |
|
if (!(rept & 1<<i)) |
464 |
|
newp.h[i] = p->h[i]; |
465 |
|
} |
466 |
|
/* spread reference and opposite */ |
467 |
< |
if (p->x[1] > p->x[0]) { |
467 |
> |
if (p->x[2] > p->x[0]) { |
468 |
|
newp.x[0] -= 2; |
469 |
< |
newp.x[1] += 2; |
469 |
> |
newp.x[1] -= 2; |
470 |
|
newp.x[2] += 2; |
471 |
< |
newp.x[3] -= 2; |
472 |
< |
} else if (p->x[0] > p->x[1]) { |
471 |
> |
newp.x[3] += 2; |
472 |
> |
} else if (p->x[0] > p->x[2]) { |
473 |
|
newp.x[0] += 2; |
474 |
< |
newp.x[1] -= 2; |
474 |
> |
newp.x[1] += 2; |
475 |
|
newp.x[2] -= 2; |
476 |
< |
newp.x[3] += 2; |
476 |
> |
newp.x[3] -= 2; |
477 |
|
} |
478 |
< |
if (p->y[1] > p->y[0]) { |
478 |
> |
if (p->y[2] > p->y[0]) { |
479 |
|
newp.y[0] -= 2; |
480 |
< |
newp.y[1] += 2; |
480 |
> |
newp.y[1] -= 2; |
481 |
|
newp.y[2] += 2; |
482 |
< |
newp.y[3] -= 2; |
483 |
< |
} else if (p->y[0] > p->y[1]) { |
482 |
> |
newp.y[3] += 2; |
483 |
> |
} else if (p->y[0] > p->y[2]) { |
484 |
|
newp.y[0] += 2; |
485 |
< |
newp.y[1] -= 2; |
485 |
> |
newp.y[1] += 2; |
486 |
|
newp.y[2] -= 2; |
487 |
< |
newp.y[3] += 2; |
487 |
> |
newp.y[3] -= 2; |
488 |
|
} |
489 |
|
/* put out faces */ |
490 |
|
sprintf(buf, "op%d", ++nopens); |
491 |
< |
putface(openmod, buf, "ref", &newp, 3, 7, 4, 0, fp); |
492 |
< |
putface(openmod, buf, "opp", &newp, 5, 6, 2, 1, fp); |
493 |
< |
putface(openmod, buf, "end1", &newp, 2, 6, 7, 3, fp); |
494 |
< |
putface(openmod, buf, "end2", &newp, 4, 5, 1, 0, fp); |
491 |
> |
putface(openmod, buf, "ref", &newp, 4, 5, 1, 0, fp); |
492 |
> |
putface(openmod, buf, "opp", &newp, 2, 6, 7, 3, fp); |
493 |
> |
putface(openmod, buf, "end1", &newp, 5, 6, 2, 1, fp); |
494 |
> |
putface(openmod, buf, "end2", &newp, 3, 7, 4, 0, fp); |
495 |
|
putface(openmod, buf, "bot", &newp, 1, 2, 3, 0, fp); |
496 |
|
putface(openmod, buf, "top", &newp, 7, 6, 5, 4, fp); |
497 |
|
} |
543 |
|
return; |
544 |
|
bn = blkname(bp); |
545 |
|
if (ff & 1<<F_REF) |
546 |
< |
putface(m, bn, "ref", &bp->p, 3, 7, 4, 0, fp); |
546 |
> |
putface(m, bn, "ref", &bp->p, 4, 5, 1, 0, fp); |
547 |
|
if (ff & 1<<F_OPP) |
548 |
< |
putface(m, bn, "opp", &bp->p, 5, 6, 2, 1, fp); |
548 |
> |
putface(m, bn, "opp", &bp->p, 2, 6, 7, 3, fp); |
549 |
|
if (ff & 1<<F_END) { |
550 |
< |
putface(m, bn, "end1", &bp->p, 2, 6, 7, 3, fp); |
551 |
< |
putface(m, bn, "end2", &bp->p, 4, 5, 1, 0, fp); |
550 |
> |
putface(m, bn, "end1", &bp->p, 5, 6, 2, 1, fp); |
551 |
> |
putface(m, bn, "end2", &bp->p, 3, 7, 4, 0, fp); |
552 |
|
} |
553 |
|
if (ff & 1<<F_BOT) |
554 |
|
putface(m, bn, "bot", &bp->p, 1, 2, 3, 0, fp); |