Przeglądaj źródła

fix (?) bug in fan maker that put a hole in our couch

David Rose 24 lat temu
rodzic
commit
44ac351cf7
1 zmienionych plików z 30 dodań i 31 usunięć
  1. 30 31
      panda/src/builder/mesherTempl.I

+ 30 - 31
panda/src/builder/mesherTempl.I

@@ -500,6 +500,10 @@ find_fans() {
 
   Verts::iterator vi;
 
+  // Build up a list of far fan edges.
+  typedef pvector<FanMaker> FanMakers;
+  FanMakers fans;
+
   for (vi = _verts.begin(); vi != _verts.end(); ++vi) {
     EdgePtrs &edges = (*vi).second;
 
@@ -512,11 +516,6 @@ find_fans() {
     if (edges.size() > 6) {
       const Vertex &v = (*vi).first;
 
-      // Build up a list of far fan edges.
-      typedef pvector<FanMaker> FanMakers;
-
-      FanMakers fans;
-
       EdgePtrs::iterator ei;
       Edge::Strips::iterator si;
       for (ei = edges.begin(); ei != edges.end(); ++ei) {
@@ -529,36 +528,36 @@ 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);
-
-      for (fi = fans.begin(); fi != fans.end(); ++fi) {
-        if ((*fi).is_valid()) {
-          (*fi).build();
-        }
       }
     }
+  } while (joined_any);
+
+  for (fi = fans.begin(); fi != fans.end(); ++fi) {
+    cerr << "Got fan, is_valid = " << (*fi).is_valid() << "\n";
+    if ((*fi).is_valid()) {
+      (*fi).build();
+    }
   }
 #endif
 }