diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-11-08 04:13:23 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-11-08 04:13:23 +0300 |
commit | e9d7fddeb442ec266fa2cb1eaf406ccfbe970ef2 (patch) | |
tree | b1d46090117dc016051186d2d97ec41b996417c8 /source/blender/blenkernel/intern | |
parent | 5c2670ca394b5270b29a1e3669bb05f410c4e997 (diff) |
Fix dyntopo sculpt not setting vertex indices dirty
This is an old bug exposed by new cursor drawing
which uses vertex indices.
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/pbvh_bmesh.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/pbvh_bmesh.c b/source/blender/blenkernel/intern/pbvh_bmesh.c index 6d38ae13994..d4115dc0080 100644 --- a/source/blender/blenkernel/intern/pbvh_bmesh.c +++ b/source/blender/blenkernel/intern/pbvh_bmesh.c @@ -413,7 +413,7 @@ static bool pbvh_bmesh_node_limit_ensure(PBVH *bvh, int node_index) /* so we can do direct lookups on 'bbc_array' */ BM_elem_index_set(f, i); /* set_dirty! */ } - /* likely this is already dirty */ + /* Likely this is already dirty. */ bvh->bm->elem_index_dirty |= BM_FACE; pbvh_bmesh_node_split(bvh, bbc_array, node_index); @@ -1923,15 +1923,14 @@ void BKE_pbvh_build_bmesh(PBVH *bvh, nodeinfo[i] = f; BM_ELEM_CD_SET_INT(f, cd_face_node_offset, DYNTOPO_NODE_NONE); } + /* Likely this is already dirty. */ + bm->elem_index_dirty |= BM_FACE; BMVert *v; BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) { BM_ELEM_CD_SET_INT(v, cd_vert_node_offset, DYNTOPO_NODE_NONE); } - /* likely this is already dirty */ - bm->elem_index_dirty |= BM_FACE; - /* setup root node */ struct FastNodeBuildInfo rootnode = {0}; rootnode.totface = bm->totface; @@ -2036,7 +2035,7 @@ bool BKE_pbvh_bmesh_update_topology(PBVH *bvh, * (currently just raycast), store the node's triangles and vertices. * * Skips triangles that are hidden. */ -void BKE_pbvh_bmesh_node_save_orig(PBVHNode *node) +void BKE_pbvh_bmesh_node_save_orig(BMesh *bm, PBVHNode *node) { /* Skip if original coords/triangles are already saved */ if (node->bm_orco) { @@ -2065,6 +2064,8 @@ void BKE_pbvh_bmesh_node_save_orig(PBVHNode *node) BM_elem_index_set(v, i); /* set_dirty! */ i++; } + /* Likely this is already dirty. */ + bm->elem_index_dirty |= BM_VERT; /* Copy the triangles */ i = 0; |