소스 검색

revert out bad 'fix'

David Rose 24 년 전
부모
커밋
9bc9b4bd5f
1개의 변경된 파일29개의 추가작업 그리고 39개의 파일을 삭제
  1. 29 39
      panda/src/builder/mesherTempl.I

+ 29 - 39
panda/src/builder/mesherTempl.I

@@ -500,17 +500,9 @@ find_fans() {
 
 
   Verts::iterator vi;
   Verts::iterator vi;
 
 
-  // Build up several lists of far fan edges.
-  typedef pvector<FanMaker> FanMakers;
-  typedef pvector<FanMakers> FanGroups;
-  FanGroups fan_groups;
-
   for (vi = _verts.begin(); vi != _verts.end(); ++vi) {
   for (vi = _verts.begin(); vi != _verts.end(); ++vi) {
     EdgePtrs &edges = (*vi).second;
     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
     // 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
     // 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
     // times two, one each way).  We don't want to waste time fanning
@@ -520,6 +512,11 @@ find_fans() {
     if (edges.size() > 6) {
     if (edges.size() > 6) {
       const Vertex &v = (*vi).first;
       const Vertex &v = (*vi).first;
 
 
+      // Build up a list of far fan edges.
+      typedef pvector<FanMaker> FanMakers;
+
+      FanMakers fans;
+
       EdgePtrs::iterator ei;
       EdgePtrs::iterator ei;
       Edge::Strips::iterator si;
       Edge::Strips::iterator si;
       for (ei = edges.begin(); ei != edges.end(); ++ei) {
       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();
+        }
       }
       }
     }
     }
   }
   }