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 */ |