[Bf-blender-cvs] [547139c59c2] refactor-mesh-bevel-weight-generic: Cleanup: Extract function

Hans Goudey noreply at git.blender.org
Mon May 30 20:41:07 CEST 2022


Commit: 547139c59c27dba585777a2c66e86e3e4cb92425
Author: Hans Goudey
Date:   Mon May 30 20:37:18 2022 +0200
Branches: refactor-mesh-bevel-weight-generic
https://developer.blender.org/rB547139c59c27dba585777a2c66e86e3e4cb92425

Cleanup: Extract function

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

M	source/blender/blenkernel/intern/mesh.cc

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

diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc
index a1a0777f81a..15953c5068b 100644
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@ -210,6 +210,39 @@ static void mesh_foreach_path(ID *id, BPathForeachPathData *bpath_data)
   }
 }
 
+/**
+ * \note This can change the mesh, but it only affects legacy fields that shouldn't be read anyway.
+ */
+static void prepare_legacy_bevel_weight_data_for_writing(Mesh &mesh)
+{
+  MutableSpan<MVert> verts(mesh.mvert, mesh.totvert);
+  const float *vert_bevel = (const float *)CustomData_get_layer(&mesh.vdata, CD_BWEIGHT);
+  if (vert_bevel == nullptr) {
+    for (const int i : verts.index_range()) {
+      verts[i].bweight = 0;
+    }
+  }
+  else {
+    mesh.cd_flag |= ME_CDFLAG_VERT_BWEIGHT;
+    for (const int i : verts.index_range()) {
+      verts[i].bweight = std::clamp(vert_bevel[i], 0.0f, 1.0f) * 255.0f;
+    }
+  }
+  MutableSpan<MEdge> edges(mesh.medge, mesh.totedge);
+  const float *edge_bevel = (const float *)CustomData_get_layer(&mesh.edata, CD_BWEIGHT);
+  if (edge_bevel == nullptr) {
+    for (const int i : edges.index_range()) {
+      edges[i].bweight = 0;
+    }
+  }
+  else {
+    mesh.cd_flag |= ME_CDFLAG_EDGE_BWEIGHT;
+    for (const int i : edges.index_range()) {
+      edges[i].bweight = std::clamp(edge_bevel[i], 0.0f, 1.0f) * 255.0f;
+    }
+  }
+}
+
 static void mesh_blend_write(BlendWriter *writer, ID *id, const void *id_address)
 {
   Mesh *mesh = (Mesh *)id;
@@ -252,32 +285,7 @@ static void mesh_blend_write(BlendWriter *writer, ID *id, const void *id_address
   }
 
   if (BLO_write_use_legacy_mesh_format(writer)) {
-    MutableSpan<MVert> verts(mesh->mvert, mesh->totvert);
-    const float *vert_bevel = (const float *)CustomData_get_layer(&mesh->vdata, CD_BWEIGHT);
-    if (vert_bevel == nullptr) {
-      for (const int i : verts.index_range()) {
-        verts[i].bweight = 0;
-      }
-    }
-    else {
-      mesh->cd_flag |= ME_CDFLAG_VERT_BWEIGHT;
-      for (const int i : verts.index_range()) {
-        verts[i].bweight = std::clamp(vert_bevel[i], 0.0f, 1.0f) * 255.0f;
-      }
-    }
-    MutableSpan<MEdge> edges(mesh->medge, mesh->totedge);
-    const float *edge_bevel = (const float *)CustomData_get_layer(&mesh->edata, CD_BWEIGHT);
-    if (edge_bevel == nullptr) {
-      for (const int i : edges.index_range()) {
-        edges[i].bweight = 0;
-      }
-    }
-    else {
-      mesh->cd_flag |= ME_CDFLAG_EDGE_BWEIGHT;
-      for (const int i : edges.index_range()) {
-        edges[i].bweight = std::clamp(edge_bevel[i], 0.0f, 1.0f) * 255.0f;
-      }
-    }
+    prepare_legacy_bevel_weight_data_for_writing(*mesh);
   }
 
   BLO_write_id_struct(writer, Mesh, id_address, &mesh->id);



More information about the Bf-blender-cvs mailing list