[Bf-blender-cvs] [3306b4a86bb] blender-v3.3-release: Fix T99253: Missing face center dots with deform modifier cage option

Hans Goudey noreply at git.blender.org
Tue Aug 30 17:41:42 CEST 2022


Commit: 3306b4a86bb8dcb0a1640fc73c355e5fff9073a7
Author: Hans Goudey
Date:   Tue Aug 30 10:41:26 2022 -0500
Branches: blender-v3.3-release
https://developer.blender.org/rB3306b4a86bb8dcb0a1640fc73c355e5fff9073a7

Fix T99253: Missing face center dots with deform modifier cage option

Before 8c25889bb67db4c, subsurf face center tags were stored in each
vertex, so they were always copied to duplicate meshes. Now they are
stored in runtime data though, so they need to be copied explicitly.
The function name "reset_on_copy" is a bit awkward here, so the
tags are copied by the caller.

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

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

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

diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc
index cf05dc0404e..afd8e49f884 100644
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@ -96,6 +96,10 @@ static void mesh_copy_data(Main *bmain, ID *id_dst, const ID *id_src, const int
   const Mesh *mesh_src = (const Mesh *)id_src;
 
   BKE_mesh_runtime_reset_on_copy(mesh_dst, flag);
+  /* Copy face dot tags, since meshes may be duplicated after a subsurf modifier
+   * or node, but we still need to be able to draw face center vertices. */
+  mesh_dst->runtime.subsurf_face_dot_tags = static_cast<uint32_t *>(
+      MEM_dupallocN(mesh_src->runtime.subsurf_face_dot_tags));
   if ((mesh_src->id.tag & LIB_TAG_NO_MAIN) == 0) {
     /* This is a direct copy of a main mesh, so for now it has the same topology. */
     mesh_dst->runtime.deformed_only = true;



More information about the Bf-blender-cvs mailing list