[Bf-blender-cvs] [fbfa2f81ff5] refactor-mesh-position-generic: Fix possible to remove mesh position attribute

Hans Goudey noreply at git.blender.org
Fri Sep 16 00:06:54 CEST 2022


Commit: fbfa2f81ff55ebdccbfcd2db3b94048aeec2cb1d
Author: Hans Goudey
Date:   Thu Sep 15 13:30:47 2022 -0500
Branches: refactor-mesh-position-generic
https://developer.blender.org/rBfbfa2f81ff55ebdccbfcd2db3b94048aeec2cb1d

Fix possible to remove mesh position attribute

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

M	source/blender/blenkernel/BKE_mesh.h
M	source/blender/blenkernel/intern/attribute.cc
M	source/blender/blenkernel/intern/mesh.cc
M	source/blender/blenkernel/intern/mesh_convert.cc

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

diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index e15fade91c8..333ad60025a 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -184,6 +184,8 @@ struct Mesh *BKE_mesh_new_nomain_from_curve(const struct Object *ob);
 struct Mesh *BKE_mesh_new_nomain_from_curve_displist(const struct Object *ob,
                                                      const struct ListBase *dispbase);
 
+bool BKE_mesh_attribute_required(const char *name);
+
 bool BKE_mesh_ensure_facemap_customdata(struct Mesh *me);
 bool BKE_mesh_clear_facemap_customdata(struct Mesh *me);
 
diff --git a/source/blender/blenkernel/intern/attribute.cc b/source/blender/blenkernel/intern/attribute.cc
index bd3e452b7f2..747b17c6035 100644
--- a/source/blender/blenkernel/intern/attribute.cc
+++ b/source/blender/blenkernel/intern/attribute.cc
@@ -31,6 +31,7 @@
 #include "BKE_curves.hh"
 #include "BKE_customdata.h"
 #include "BKE_editmesh.h"
+#include "BKE_mesh.h"
 #include "BKE_pointcloud.h"
 #include "BKE_report.h"
 
@@ -456,6 +457,8 @@ bool BKE_id_attribute_required(const ID *id, const char *name)
       return BKE_pointcloud_attribute_required((const PointCloud *)id, name);
     case ID_CV:
       return BKE_curves_attribute_required((const Curves *)id, name);
+    case ID_ME:
+      return BKE_mesh_attribute_required(name);
     default:
       return false;
   }
diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc
index 2a968567d2a..44c9e3e6c42 100644
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@ -763,6 +763,11 @@ const char *BKE_mesh_cmp(Mesh *me1, Mesh *me2, float thresh)
   return nullptr;
 }
 
+bool BKE_mesh_attribute_required(const char *name)
+{
+  return StringRef(name) == "position";
+}
+
 void BKE_mesh_ensure_skin_customdata(Mesh *me)
 {
   BMesh *bm = me->edit_mesh ? me->edit_mesh->bm : nullptr;
diff --git a/source/blender/blenkernel/intern/mesh_convert.cc b/source/blender/blenkernel/intern/mesh_convert.cc
index ed201106be2..21aa64f64e7 100644
--- a/source/blender/blenkernel/intern/mesh_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_convert.cc
@@ -1331,7 +1331,7 @@ void BKE_mesh_nomain_to_meshkey(Mesh *mesh_src, Mesh *mesh_dst, KeyBlock *kb)
 {
   BLI_assert(mesh_src->id.tag & LIB_TAG_NO_MAIN);
 
-  int a, totvert = mesh_src->totvert;
+  const int totvert = mesh_src->totvert;
 
   if (totvert == 0 || mesh_dst->totvert == 0 || mesh_dst->totvert != totvert) {
     return;



More information about the Bf-blender-cvs mailing list