From 9bc9b4bd5fe17bd2dbbfea18c3b113dea5988201 Mon Sep 17 00:00:00 2001 From: David Rose Date: Sat, 17 Nov 2001 04:08:49 +0000 Subject: [PATCH] revert out bad 'fix' --- panda/src/builder/mesherTempl.I | 68 ++++++++++++++------------------- 1 file changed, 29 insertions(+), 39 deletions(-) diff --git a/panda/src/builder/mesherTempl.I b/panda/src/builder/mesherTempl.I index 43f0533092..744de6e88e 100644 --- a/panda/src/builder/mesherTempl.I +++ b/panda/src/builder/mesherTempl.I @@ -500,17 +500,9 @@ find_fans() { Verts::iterator vi; - // Build up several lists of far fan edges. - typedef pvector FanMakers; - typedef pvector FanGroups; - FanGroups fan_groups; - for (vi = _verts.begin(); vi != _verts.end(); ++vi) { EdgePtrs &edges = (*vi).second; - fan_groups.push_back(FanMakers()); - FanMakers &fans = fan_groups.back(); - // 14 is the magic number of edges. 12 edges or fewer are likely // to be found on nearly every vertex in a quadsheet (six edges // times two, one each way). We don't want to waste time fanning @@ -520,6 +512,11 @@ find_fans() { if (edges.size() > 6) { const Vertex &v = (*vi).first; + // Build up a list of far fan edges. + typedef pvector FanMakers; + + FanMakers fans; + EdgePtrs::iterator ei; Edge::Strips::iterator si; for (ei = edges.begin(); ei != edges.end(); ++ei) { @@ -532,41 +529,34 @@ find_fans() { } } } - } - - // Sort the fans list by edge pointers, and remove duplicates. - sort(fans.begin(), fans.end()); - fans.erase(unique(fans.begin(), fans.end()), fans.end()); - - FanMakers::iterator fi, fi2; - - // Now pull out connected edges. - int joined_any; - do { - joined_any = false; - for (fi = fans.begin(); fi != fans.end(); ++fi) { - if (!(*fi).is_empty()) { - fi2 = fi; - for (++fi2; fi2 != fans.end(); ++fi2) { - if (!(*fi2).is_empty()) { - joined_any = (*fi).join(*fi2); + + // Sort the fans list by edge pointers, and remove duplicates. + sort(fans.begin(), fans.end()); + fans.erase(unique(fans.begin(), fans.end()), + fans.end()); + + FanMakers::iterator fi, fi2; + + // Now pull out connected edges. + int joined_any; + do { + joined_any = false; + for (fi = fans.begin(); fi != fans.end(); ++fi) { + if (!(*fi).is_empty()) { + fi2 = fi; + for (++fi2; fi2 != fans.end(); ++fi2) { + if (!(*fi2).is_empty()) { + joined_any = (*fi).join(*fi2); + } } } } - } - } while (joined_any); - } + } while (joined_any); - // Now try to make all the fans. We do this after we have gone - // completely through the list of vertices, above, since making fans - // may add more (false) triangles to the pool. - FanGroups::iterator gi; - for (gi = fan_groups.begin(); gi != fan_groups.end(); ++gi) { - FanMakers &fans = (*gi); - FanMakers::iterator fi; - for (fi = fans.begin(); fi != fans.end(); ++fi) { - if ((*fi).is_valid()) { - (*fi).build(); + for (fi = fans.begin(); fi != fans.end(); ++fi) { + if ((*fi).is_valid()) { + (*fi).build(); + } } } }