[Bf-blender-cvs] [068d9a58dd2] refactor-mesh-hide-generic: Add untested forward compatibility

Hans Goudey noreply at git.blender.org
Mon May 30 20:59:14 CEST 2022


Commit: 068d9a58dd25d6d5f1070c3e140cd0941e6ba5df
Author: Hans Goudey
Date:   Mon May 30 20:59:11 2022 +0200
Branches: refactor-mesh-hide-generic
https://developer.blender.org/rB068d9a58dd25d6d5f1070c3e140cd0941e6ba5df

Add untested forward compatibility

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

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..77f877cd91a 100644
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@ -28,6 +28,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"
@@ -39,6 +40,7 @@
 #include "BKE_bpath.h"
 #include "BKE_deform.h"
 #include "BKE_editmesh.h"
+#include "BKE_geometry_set.hh"
 #include "BKE_global.h"
 #include "BKE_idtype.h"
 #include "BKE_key.h"
@@ -61,7 +63,8 @@
 #include "BLO_read_write.h"
 
 using blender::float3;
-using blender::Vector;
+using blender::MutableSpan;
+using blender::VArray using blender::Vector;
 
 static void mesh_clear_geometry(Mesh *mesh);
 static void mesh_tessface_clear_intern(Mesh *mesh, int free_customdata);
@@ -205,6 +208,33 @@ static void mesh_foreach_path(ID *id, BPathForeachPathData *bpath_data)
   }
 }
 
+static void prepare_legacy_hide_data_for_writing(Mesh &mesh)
+{
+  MeshComponent component;
+  component.replace(&mesh, GeometryOwnershipType::ReadOnly);
+
+  MutableSpan<MVert> verts(mesh.mvert, mesh.totvert);
+  const VArray<bool> vert_hide = component.attribute_get_for_read<bool>(
+      ".vert_hide", ATTR_DOMAIN_POINT, false);
+  for (const int i : verts.index_range()) {
+    SET_FLAG_FROM_TEST(verts[i].flag, vert_hide[i], ME_HIDE);
+  }
+
+  MutableSpan<MEdge> edges(mesh.medge, mesh.totedge);
+  const VArray<bool> edge_hide = component.attribute_get_for_read<bool>(
+      ".edge_hide", ATTR_DOMAIN_EDGE, false);
+  for (const int i : edges.index_range()) {
+    SET_FLAG_FROM_TEST(edges[i].flag, edge_hide[i], ME_HIDE);
+  }
+
+  MutableSpan<MPoly> polys(mesh.mpoly, mesh.totpoly);
+  const VArray<bool> poly_hide = component.attribute_get_for_read<bool>(
+      ".poly_hide", ATTR_DOMAIN_FACE, false);
+  for (const int i : polys.index_range()) {
+    SET_FLAG_FROM_TEST(polys[i].flag, poly_hide[i], ME_HIDE);
+  }
+}
+
 static void mesh_blend_write(BlendWriter *writer, ID *id, const void *id_address)
 {
   Mesh *mesh = (Mesh *)id;
@@ -246,6 +276,10 @@ 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)) {
+    prepare_legacy_bevel_weight_data_for_writing(*mesh);
+  }
+
   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