[Bf-blender-cvs] [1583a3d4ddc] refactor-mesh-bevel-weight-generic: Add disfunctional legacy mesh format writing

Hans Goudey noreply at git.blender.org
Sun May 29 14:50:22 CEST 2022


Commit: 1583a3d4ddc97727f8f0875ba887518217116951
Author: Hans Goudey
Date:   Sun May 29 14:50:20 2022 +0200
Branches: refactor-mesh-bevel-weight-generic
https://developer.blender.org/rB1583a3d4ddc97727f8f0875ba887518217116951

Add disfunctional legacy mesh format writing

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

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

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

diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc
index 0becea62810..a222c693d19 100644
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@ -5,6 +5,8 @@
  * \ingroup bke
  */
 
+#include <algorithm>
+
 #include "MEM_guardedalloc.h"
 
 /* Allow using deprecated functionality for .blend file I/O. */
@@ -28,6 +30,7 @@
 #include "BLI_math.h"
 #include "BLI_math_vector.hh"
 #include "BLI_memarena.h"
+#include "BLI_span.hh"
 #include "BLI_string.h"
 #include "BLI_task.hh"
 #include "BLI_utildefines.h"
@@ -61,6 +64,8 @@
 #include "BLO_read_write.h"
 
 using blender::float3;
+using blender::IndexRange;
+using blender::MutableSpan;
 using blender::Vector;
 
 static void mesh_clear_geometry(Mesh *mesh);
@@ -246,6 +251,33 @@ static void mesh_blend_write(BlendWriter *writer, ID *id, const void *id_address
     CustomData_blend_write_prepare(mesh->pdata, poly_layers);
   }
 
+  if (BLO_write_use_legacy_mesh_format(writer)) {
+    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 {
+      for (const int i : edges.index_range()) {
+        edges[i].bweight = std::clamp(edge_bevel[i], 0.0f, 1.0f) / 255.0f;
+      }
+    }
+    MutableSpan<MVert> verts(mesh->mvert, mesh->totvert);
+    const float *vert_bevel = (const float *)CustomData_get_layer(&mesh->edata, CD_BWEIGHT);
+    if (vert_bevel == nullptr) {
+      for (const int i : verts.index_range()) {
+        verts[i].bweight = 0;
+      }
+    }
+    else {
+      for (const int i : verts.index_range()) {
+        verts[i].bweight = std::clamp(vert_bevel[i], 0.0f, 1.0f) / 255.0f;
+      }
+    }
+  }
+
   BLO_write_id_struct(writer, Mesh, id_address, &mesh->id);
   BKE_id_blend_write(writer, &mesh->id);



More information about the Bf-blender-cvs mailing list