[Bf-blender-cvs] [3fd16180d73] soc-2019-adaptive-cloth: Cloth: switch active_faces from LinkNodePair to vector<>

ishbosamiya noreply at git.blender.org
Fri Jun 28 19:52:45 CEST 2019


Commit: 3fd16180d7348f536a30d64ad11efadb352ba74c
Author: ishbosamiya
Date:   Fri Jun 28 18:25:20 2019 +0530
Branches: soc-2019-adaptive-cloth
https://developer.blender.org/rB3fd16180d7348f536a30d64ad11efadb352ba74c

Cloth: switch active_faces from LinkNodePair to vector<>

===================================================================

M	source/blender/blenkernel/intern/cloth_remeshing.cpp

===================================================================

diff --git a/source/blender/blenkernel/intern/cloth_remeshing.cpp b/source/blender/blenkernel/intern/cloth_remeshing.cpp
index 97915f34763..ca2bf1d3de0 100644
--- a/source/blender/blenkernel/intern/cloth_remeshing.cpp
+++ b/source/blender/blenkernel/intern/cloth_remeshing.cpp
@@ -268,27 +268,28 @@ static Mesh *cloth_remeshing_update_cloth_object_bmesh(Object *ob, ClothModifier
   return mesh_result;
 }
 
-static LinkNodePair *cloth_remeshing_find_edges_to_flip(BMesh *bm, LinkNodePair *active_faces)
+static vector<BMEdge *> cloth_remeshing_find_edges_to_flip(BMesh *bm,
+                                                           vector<BMFace *> &active_faces)
 {
   /* TODO(Ish) */
-  return NULL;
+  return vector<BMEdge *>();
 }
 
-static LinkNodePair *cloth_remeshing_find_independent_edges(LinkNodePair *edges)
+static vector<BMEdge *> cloth_remeshing_find_independent_edges(vector<BMEdge *> edges)
 {
   /* TODO(Ish) */
-  return NULL;
+  return vector<BMEdge *>();
 }
 
-static void cloth_remeshing_flip_edges(BMesh *bm, LinkNodePair *active_faces)
+static void cloth_remeshing_flip_edges(BMesh *bm, vector<BMFace *> &active_faces)
 {
   /* TODO(Ish): This loop might cause problems */
-  while (BLI_linklist_count(active_faces->list) != 0) {
-    LinkNodePair *flipable_edges = cloth_remeshing_find_edges_to_flip(bm, active_faces);
-    LinkNodePair *independent_edges = cloth_remeshing_find_independent_edges(flipable_edges);
+  while (active_faces.size() != 0) {
+    vector<BMEdge *> flipable_edges = cloth_remeshing_find_edges_to_flip(bm, active_faces);
+    vector<BMEdge *> independent_edges = cloth_remeshing_find_independent_edges(flipable_edges);
 
-    while (BLI_linklist_count(independent_edges->list) != 0) {
-      BMEdge *edge = (BMEdge *)BLI_linklist_pop(&independent_edges->list);
+    for (int i = 0; i < independent_edges.size(); i++) {
+      BMEdge *edge = independent_edges[i];
       BM_edge_rotate(
           bm, edge, true, BM_EDGEROT_CHECK_SPLICE); /* this sets it up for BM_CREATE_NO_DOUBLE
                                                      */
@@ -298,7 +299,7 @@ static void cloth_remeshing_flip_edges(BMesh *bm, LinkNodePair *active_faces)
   }
 }
 
-static bool cloth_remeshing_fix_mesh(BMesh *bm, LinkNodePair *active_faces)
+static bool cloth_remeshing_fix_mesh(BMesh *bm, vector<BMFace *> active_faces)
 {
   cloth_remeshing_flip_edges(bm, active_faces);
   return true;
@@ -764,11 +765,11 @@ static bool cloth_remeshing_try_edge_collapse(BMEdge *e, BMesh *bm)
 }
 
 static bool cloth_remeshing_collapse_edges(ClothModifierData *clmd,
-                                           LinkNodePair *sizing,
-                                           LinkNodePair *active_faces)
+                                           vector<ClothSizing> &sizing,
+                                           vector<BMFace *> &active_faces)
 {
-  for (int i = 0; i < BLI_linklist_count(active_faces->list); i++) {
-    BMFace *f = (BMFace *)BLI_linklist_find(active_faces->list, i)->link;
+  for (int i = 0; i < active_faces.size(); i++) {
+    BMFace *f = active_faces[i];
     BMEdge *e;
     BMIter eiter;
     BM_ITER_ELEM (e, &eiter, f, BM_EDGES_OF_FACE) {
@@ -813,16 +814,13 @@ static void cloth_remeshing_static(ClothModifierData *clmd)
   /**
    * Collapse edges
    */
-  // LinkNodePair *active_faces = (LinkNodePair *)MEM_mallocN(sizeof(LinkNodePair),
-  //                                                          "Active Faces LinkNodePair");
-  // active_faces->list = NULL;
-  // active_faces->last_node = NULL;
+  // vector<BMFace *> active_faces;
   // BMFace *f;
   // BMIter fiter;
   // BM_ITER_MESH (f, &fiter, clmd->clothObject->bm, BM_FACES_OF_MESH) {
-  //   BLI_linklist_append(active_faces, f);
+  //   active_faces.push_back(f);
   // }
-  // while (cloth_remeshing_collapse_edges(clmd, &sizing, active_faces)) {
+  // while (cloth_remeshing_collapse_edges(clmd, sizing, active_faces)) {
   //   /* empty while */
   // }
 
@@ -830,8 +828,7 @@ static void cloth_remeshing_static(ClothModifierData *clmd)
    * Delete sizing
    */
   sizing.clear();
-  // BLI_linklist_free(active_faces->list, NULL);
-  // MEM_freeN(active_faces);
+  // active_faces.clear();
 }
 
 Mesh *cloth_remeshing_step(Object *ob, ClothModifierData *clmd, Mesh *mesh)



More information about the Bf-blender-cvs mailing list