MCPcopy Create free account
hub / github.com/WolfireGames/overgrowth / OptimizeVertexOrder

Method OptimizeVertexOrder

Source/Graphics/model.cpp:2376–2395  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2374}
2375
2376void 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
2397struct edge {
2398 int vert_id[2];

Callers 1

LoadMethod · 0.80

Calls 4

RearrangeVerticesFunction · 0.85
sizeMethod · 0.45
clearMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected