| 2374 | } |
| 2375 | |
| 2376 | void Model::OptimizeVertexOrder() { |
| 2377 | std::vector<int> order(vertices.size() / 3, -1); |
| 2378 | unsigned index = 0; |
| 2379 | for (unsigned int &face : faces) { |
| 2380 | if (order[face] == -1) { |
| 2381 | order[face] = index++; |
| 2382 | } |
| 2383 | face = order[face]; |
| 2384 | } |
| 2385 | optimize_vert_reorder.clear(); |
| 2386 | optimize_vert_reorder.resize(index, -1); |
| 2387 | for (int i = 0, len = order.size(); i < len; i++) { |
| 2388 | if (order[i] >= 0 && order[i] < (int)optimize_vert_reorder.size()) { |
| 2389 | optimize_vert_reorder[order[i]] = i; |
| 2390 | } else { |
| 2391 | LOGW << "Oddity when running " << __FUNCTION__ << ", order[i] is out of bounds, value is " << order[i] << " on index " << i << std::endl; |
| 2392 | } |
| 2393 | } |
| 2394 | RearrangeVertices(*this, optimize_vert_reorder); |
| 2395 | } |
| 2396 | |
| 2397 | struct edge { |
| 2398 | int vert_id[2]; |
no test coverage detected