[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