| 259 |
|
repl_tex[0] = -1; |
| 260 |
|
for (f = sc->vert[repl].vflist; f != NULL; f = f->v[j].fnext) { |
| 261 |
|
/* make sure prev isn't in there */ |
| 262 |
< |
for (j = 0; j < f->nv; j++) |
| 262 |
> |
for (j = f->nv; j-- > 0; ) |
| 263 |
|
if (f->v[j].vid == prev) |
| 264 |
|
return(0); |
| 265 |
< |
for (j = 0; j < f->nv; j++) |
| 265 |
> |
for (j = f->nv; j-- > 0; ) |
| 266 |
|
if (f->v[j].vid == repl) |
| 267 |
|
break; |
| 268 |
< |
if (j >= f->nv) |
| 268 |
> |
if (j < 0) |
| 269 |
|
goto linkerr; |
| 270 |
|
if (f->v[j].tid < 0) |
| 271 |
|
continue; |
| 290 |
|
/* get replacement normals */ |
| 291 |
|
repl_norm[0] = -1; |
| 292 |
|
for (f = sc->vert[repl].vflist; f != NULL; f = f->v[j].fnext) { |
| 293 |
< |
for (j = 0; j < f->nv; j++) |
| 293 |
> |
for (j = f->nv; j-- > 0; ) |
| 294 |
|
if (f->v[j].vid == repl) |
| 295 |
|
break; |
| 296 |
|
if (f->v[j].nid < 0) |
| 315 |
|
} |
| 316 |
|
/* replace occurrences of vertex */ |
| 317 |
|
for (f = sc->vert[prev].vflist; f != NULL; f = f->v[j].fnext) { |
| 318 |
< |
for (j = 0; j < f->nv; j++) |
| 318 |
> |
for (j = f->nv; j-- > 0; ) |
| 319 |
|
if (f->v[j].vid == prev) |
| 320 |
|
break; |
| 321 |
< |
if (j >= f->nv) |
| 321 |
> |
if (j < 0) |
| 322 |
|
goto linkerr; |
| 323 |
|
/* XXX doesn't allow for multiple references to prev in face */ |
| 324 |
|
f->v[j].vid = repl; /* replace vertex itself */ |
| 432 |
|
/* look for duplicates */ |
| 433 |
|
for (f1 = sc->vert[vid].vflist; f1 != NULL; |
| 434 |
|
f1 = f1->v[j].fnext) { |
| 435 |
< |
for (j = 0; j < f1->nv; j++) |
| 435 |
> |
for (j = f1->nv; j-- > 0; ) |
| 436 |
|
if (f1->v[j].vid == vid) |
| 437 |
|
break; |
| 438 |
< |
if (j >= f1->nv) |
| 438 |
> |
if (j < 0) |
| 439 |
|
break; /* missing link! */ |
| 440 |
|
if (f1 == f) |
| 441 |
|
continue; /* shouldn't happen */ |
| 488 |
|
continue; |
| 489 |
|
} |
| 490 |
|
while (vf != NULL) { |
| 491 |
< |
for (j = 0; j < vf->nv; j++) |
| 491 |
> |
for (j = vf->nv; j-- > 0; ) |
| 492 |
|
if (vf->v[j].vid == vid) |
| 493 |
|
break; |
| 494 |
< |
if (j >= vf->nv) |
| 494 |
> |
if (j < 0) |
| 495 |
|
break; /* error */ |
| 496 |
|
if (vf->v[j].fnext == ftst) { |
| 497 |
|
vf->v[j].fnext = |
| 588 |
|
for ( ; ; ) { /* else find position */ |
| 589 |
|
if (fp == f) |
| 590 |
|
return; /* already in list */ |
| 591 |
< |
for (j = 0; j < fp->nv; j++) |
| 591 |
> |
for (j = fp->nv; j-- > 0; ) |
| 592 |
|
if (fp->v[j].vid == vid) |
| 593 |
|
break; |
| 594 |
< |
if (j >= fp->nv) |
| 594 |
> |
if (j < 0) |
| 595 |
|
error(CONSISTENCY, "Link error in add2facelist()"); |
| 596 |
|
if (fp->v[j].fnext == NULL) |
| 597 |
|
break; /* reached the end */ |