| 441 | } |
| 442 | |
| 443 | static void initVertMap(zLassoGuide* guide) |
| 444 | { |
| 445 | RpGeometry* geom = guide->poly->Data->geometry; |
| 446 | RpTriangle* tris = geom->triangles; |
| 447 | S32 numTri = geom->numTriangles; |
| 448 | |
| 449 | S32 center = tris->vertIndex[0]; |
| 450 | S32 init = tris->vertIndex[0]; |
| 451 | |
| 452 | if (((init != tris->vertIndex[4] && init != tris->vertIndex[5] && init != tris->vertIndex[6]) || |
| 453 | (init != tris->vertIndex[8] && init != tris->vertIndex[9] && init != tris->vertIndex[10])) && |
| 454 | ((init = tris->vertIndex[1], init != tris->vertIndex[4] && init != tris->vertIndex[5] && init != tris->vertIndex[6]) || |
| 455 | (init != tris->vertIndex[8] && init != tris->vertIndex[9] && init != tris->vertIndex[10]))) |
| 456 | { |
| 457 | init = tris->vertIndex[2]; |
| 458 | } |
| 459 | |
| 460 | if (init == tris->vertIndex[0]) { |
| 461 | init = tris->vertIndex[1]; |
| 462 | } |
| 463 | |
| 464 | S32 vertIdx = 0; |
| 465 | S32 curr = init; |
| 466 | S32 currTri; |
| 467 | ushort* puVar5; |
| 468 | |
| 469 | do { |
| 470 | vertIdx = vertIdx + 1; |
| 471 | guide->vertMap[vertIdx - 1] = curr; |
| 472 | |
| 473 | if (vertIdx == numTri) { |
| 474 | vertIdx = 0; |
| 475 | } |
| 476 | |
| 477 | while (true) { |
| 478 | puVar5 = &tris->vertIndex[vertIdx]; |
| 479 | currTri = puVar5[0]; |
| 480 | |
| 481 | if (curr == currTri || curr == puVar5[1] || curr == puVar5[2]) { |
| 482 | break; |
| 483 | } |
| 484 | |
| 485 | vertIdx = vertIdx + 1; |
| 486 | if (vertIdx == numTri) { |
| 487 | vertIdx = 0; |
| 488 | } |
| 489 | } |
| 490 | |
| 491 | if ((curr != currTri && center != currTri)) { |
| 492 | currTri = puVar5[1]; |
| 493 | if ((curr != currTri && center != currTri)) { |
| 494 | currTri = puVar5[2]; |
| 495 | } |
| 496 | } |
| 497 | |
| 498 | curr = currTri; |
| 499 | } while (currTri != init); |
| 500 | } |