diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2020-03-27 18:37:29 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2020-04-01 10:39:58 +0300 |
commit | 7952274cf0c4a262c274fa93c800c84c1aa2d5d7 (patch) | |
tree | c528ad6438723e46456b4752d019e09d85f63350 /source/blender/editors/sculpt_paint/sculpt.c | |
parent | 60d3a801db3a848fa82bc4bece08e0d27c7b8ecf (diff) |
Sculpt Undo: Refactor Geometry undo nodes
Made it so there is a single UNDO node in the list which has
both original and modified mesh state.
Makes it easier to achieve "interleaved" undo nodes stored in
the undo step (as opposite of either storing geometry or other
data).
Should be no functional changes, just preparing for an upcoming
work to support undo of operation like Apply Base.
Differential Revision: https://developer.blender.org/D7290
Diffstat (limited to 'source/blender/editors/sculpt_paint/sculpt.c')
-rw-r--r-- | source/blender/editors/sculpt_paint/sculpt.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 25cf17b12ce..82f9bbc5f56 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -8362,19 +8362,20 @@ static void sculpt_dynamic_topology_disable_ex( CustomData_free(&me->pdata, me->totpoly); /* Copy over stored custom data. */ - me->totvert = unode->geom_totvert; - me->totloop = unode->geom_totloop; - me->totpoly = unode->geom_totpoly; - me->totedge = unode->geom_totedge; + SculptUndoNodeGeometry *geometry = &unode->geometry_bmesh_enter; + me->totvert = geometry->totvert; + me->totloop = geometry->totloop; + me->totpoly = geometry->totpoly; + me->totedge = geometry->totedge; me->totface = 0; CustomData_copy( - &unode->geom_vdata, &me->vdata, CD_MASK_MESH.vmask, CD_DUPLICATE, unode->geom_totvert); + &geometry->vdata, &me->vdata, CD_MASK_MESH.vmask, CD_DUPLICATE, geometry->totvert); CustomData_copy( - &unode->geom_edata, &me->edata, CD_MASK_MESH.emask, CD_DUPLICATE, unode->geom_totedge); + &geometry->edata, &me->edata, CD_MASK_MESH.emask, CD_DUPLICATE, geometry->totedge); CustomData_copy( - &unode->geom_ldata, &me->ldata, CD_MASK_MESH.lmask, CD_DUPLICATE, unode->geom_totloop); + &geometry->ldata, &me->ldata, CD_MASK_MESH.lmask, CD_DUPLICATE, geometry->totloop); CustomData_copy( - &unode->geom_pdata, &me->pdata, CD_MASK_MESH.pmask, CD_DUPLICATE, unode->geom_totpoly); + &geometry->pdata, &me->pdata, CD_MASK_MESH.pmask, CD_DUPLICATE, geometry->totpoly); BKE_mesh_update_customdata_pointers(me, false); } |