From 1b910082a0effdeb06653203b1d773094a2068e5 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 9 Oct 2018 16:52:46 +1100 Subject: Edit Mesh: replace DerivedMesh w/ Mesh DerivedMesh is now removed from edit-mesh modifier evaluation. --- source/blender/blenkernel/BKE_DerivedMesh.h | 10 ++- source/blender/blenkernel/BKE_cdderivedmesh.h | 2 - source/blender/blenkernel/BKE_editmesh.h | 3 +- source/blender/blenkernel/intern/DerivedMesh.c | 72 +++++++--------------- source/blender/blenkernel/intern/cdderivedmesh.c | 26 -------- source/blender/blenkernel/intern/crazyspace.c | 8 +-- source/blender/blenkernel/intern/editderivedmesh.c | 7 ++- source/blender/blenkernel/intern/editmesh.c | 16 +++-- source/blender/blenkernel/intern/object.c | 4 ++ source/blender/blenkernel/intern/object_dupli.c | 4 +- .../intern/eval/deg_eval_copy_on_write.cc | 4 +- source/blender/draw/intern/draw_cache_impl_mesh.c | 9 +-- .../editors/space_view3d/view3d_iterators.c | 23 +++---- source/blender/editors/util/ed_transverts.c | 5 +- source/blender/modifiers/intern/MOD_meshdeform.c | 2 +- 15 files changed, 65 insertions(+), 130 deletions(-) (limited to 'source') diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index 3db032da1b1..db918bb0fbd 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -514,7 +514,7 @@ void DM_interp_poly_data( * In use now by vertex/weight paint and particles */ DMCoNo *mesh_get_mapped_verts_nors(struct Scene *scene, struct Object *ob); #endif -void mesh_get_mapped_verts_coords(DerivedMesh *dm, float (*r_cos)[3], const int totcos); +void mesh_get_mapped_verts_coords(struct Mesh *me_eval, float (*r_cos)[3], const int totcos); /* */ @@ -537,15 +537,13 @@ DerivedMesh *mesh_create_derived_no_deform_render( struct Object *ob, float (*vertCos)[3], CustomDataMask dataMask); -DerivedMesh *editbmesh_get_derived_cage( +struct Mesh *editbmesh_get_eval_cage( struct Depsgraph *depsgraph, struct Scene *scene, struct Object *, struct BMEditMesh *em, CustomDataMask dataMask); -DerivedMesh *editbmesh_get_derived_cage_and_final( +struct Mesh *editbmesh_get_eval_cage_and_final( struct Depsgraph *depsgraph, struct Scene *scene, struct Object *, struct BMEditMesh *em, CustomDataMask dataMask, - DerivedMesh **r_final); - -DerivedMesh *object_get_derived_final(struct Object *ob, const bool for_render); + struct Mesh **r_final); float (*editbmesh_get_vertex_cos(struct BMEditMesh *em, int *r_numVerts))[3]; bool editbmesh_modifier_is_enabled(struct Scene *scene, struct ModifierData *md, bool has_prev_mesh); diff --git a/source/blender/blenkernel/BKE_cdderivedmesh.h b/source/blender/blenkernel/BKE_cdderivedmesh.h index b31a3548a1e..6d96bd6ab7c 100644 --- a/source/blender/blenkernel/BKE_cdderivedmesh.h +++ b/source/blender/blenkernel/BKE_cdderivedmesh.h @@ -178,6 +178,4 @@ void CDDM_set_mface(struct DerivedMesh *dm, struct MFace *mface); void CDDM_set_mloop(struct DerivedMesh *dm, struct MLoop *mloop); void CDDM_set_mpoly(struct DerivedMesh *dm, struct MPoly *mpoly); -void CDDM_to_mesh__fast_borrow(struct DerivedMesh *dm, struct Mesh *me, const struct Mesh *me_reference); - #endif diff --git a/source/blender/blenkernel/BKE_editmesh.h b/source/blender/blenkernel/BKE_editmesh.h index 65c2caa4d78..de4efaf37b0 100644 --- a/source/blender/blenkernel/BKE_editmesh.h +++ b/source/blender/blenkernel/BKE_editmesh.h @@ -64,8 +64,9 @@ typedef struct BMEditMesh { struct BMLoop *(*looptris)[3]; int tottri; + struct Mesh *mesh_eval_final, *mesh_eval_cage; + /*derivedmesh stuff*/ - struct DerivedMesh *derivedFinal, *derivedCage; CustomDataMask lastDataMask; unsigned char (*derivedVertColor)[4]; int derivedVertColorLen; diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 4fb99008e8c..444dd3c0db3 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -60,6 +60,7 @@ #include "BKE_material.h" #include "BKE_modifier.h" #include "BKE_mesh.h" +#include "BKE_mesh_iterators.h" #include "BKE_mesh_mapping.h" #include "BKE_mesh_runtime.h" #include "BKE_mesh_tangent.h" @@ -2307,24 +2308,16 @@ static void editbmesh_build_data( depsgraph, scene, obedit, em, dataMask, &me_cage, &me_final); - /* TODO(campbell): remove derived mesh conversion. */ - em->derivedFinal = CDDM_from_mesh_ex(me_final, CD_DUPLICATE, CD_MASK_MESH); - BKE_id_free(NULL, me_final); - if (me_cage != me_final) { - em->derivedCage = CDDM_from_mesh_ex(me_cage, CD_DUPLICATE, CD_MASK_MESH); - BKE_id_free(NULL, me_cage); - } - else { - em->derivedCage = em->derivedFinal; - } + em->mesh_eval_final = me_final; + em->mesh_eval_cage = me_cage; +#if 0 DM_set_object_boundbox(obedit, em->derivedFinal); +#endif em->lastDataMask = dataMask; - em->derivedFinal->needsFree = 0; - em->derivedCage->needsFree = 0; - BLI_assert(!(em->derivedFinal->dirty & DM_DIRTY_NORMALS)); + BLI_assert(!(em->mesh_eval_final->runtime.cd_dirty_vert & DM_DIRTY_NORMALS)); } static CustomDataMask object_get_datamask(const Depsgraph *depsgraph, Object *ob, bool *r_need_mapping) @@ -2559,29 +2552,29 @@ DerivedMesh *mesh_create_derived_no_deform( /***/ -DerivedMesh *editbmesh_get_derived_cage_and_final( +Mesh *editbmesh_get_eval_cage_and_final( struct Depsgraph *depsgraph, Scene *scene, Object *obedit, BMEditMesh *em, CustomDataMask dataMask, /* return args */ - DerivedMesh **r_final) + Mesh **r_final) { /* if there's no derived mesh or the last data mask used doesn't include * the data we need, rebuild the derived mesh */ dataMask |= object_get_datamask(depsgraph, obedit, NULL); - if (!em->derivedCage || + if (!em->mesh_eval_cage || (em->lastDataMask & dataMask) != dataMask) { editbmesh_build_data(depsgraph, scene, obedit, em, dataMask); } - *r_final = em->derivedFinal; - if (em->derivedFinal) { BLI_assert(!(em->derivedFinal->dirty & DM_DIRTY_NORMALS)); } - return em->derivedCage; + *r_final = em->mesh_eval_final; + if (em->mesh_eval_final) { BLI_assert(!(em->mesh_eval_final->runtime.cd_dirty_vert & DM_DIRTY_NORMALS)); } + return em->mesh_eval_cage; } -DerivedMesh *editbmesh_get_derived_cage( +Mesh *editbmesh_get_eval_cage( struct Depsgraph *depsgraph, Scene *scene, Object *obedit, BMEditMesh *em, CustomDataMask dataMask) { @@ -2590,40 +2583,17 @@ DerivedMesh *editbmesh_get_derived_cage( */ dataMask |= object_get_datamask(depsgraph, obedit, NULL); - if (!em->derivedCage || + if (!em->mesh_eval_cage || (em->lastDataMask & dataMask) != dataMask) { editbmesh_build_data(depsgraph, scene, obedit, em, dataMask); } - return em->derivedCage; + return em->mesh_eval_cage; } /***/ -/* get derived mesh from an object, using editbmesh if available. */ -DerivedMesh *object_get_derived_final(Object *ob, const bool for_render) -{ - if (for_render) { - /* TODO(sergey): use proper derived render here in the future. */ - return ob->derivedFinal; - } - - /* only return the editmesh if its from this object because - * we don't a mesh from another object's modifier stack: T43122 */ - if (ob->type == OB_MESH) { - Mesh *me = ob->data; - BMEditMesh *em = me->edit_btmesh; - if (em && (em->ob == ob)) { - DerivedMesh *dm = em->derivedFinal; - return dm; - } - } - - return ob->derivedFinal; -} - - /* UNUSED */ #if 0 @@ -2705,20 +2675,20 @@ static void make_vertexcos__mapFunc( } } -void mesh_get_mapped_verts_coords(DerivedMesh *dm, float (*r_cos)[3], const int totcos) +void mesh_get_mapped_verts_coords(Mesh *me_eval, float (*r_cos)[3], const int totcos) { - if (dm->foreachMappedVert) { + if (me_eval->runtime.deformed_only == false) { MappedUserData userData; memset(r_cos, 0, sizeof(*r_cos) * totcos); userData.vertexcos = r_cos; userData.vertex_visit = BLI_BITMAP_NEW(totcos, "vertexcos flags"); - dm->foreachMappedVert(dm, make_vertexcos__mapFunc, &userData, DM_FOREACH_NOP); + BKE_mesh_foreach_mapped_vert(me_eval, make_vertexcos__mapFunc, &userData, MESH_FOREACH_NOP); MEM_freeN(userData.vertex_visit); } else { - int i; - for (i = 0; i < totcos; i++) { - dm->getVertCo(dm, i, r_cos[i]); + MVert *mv = me_eval->mvert; + for (int i = 0; i < totcos; i++, mv++) { + copy_v3_v3(r_cos[i], mv->co); } } } diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 83424da3a3d..9043460562d 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -2258,29 +2258,3 @@ void CDDM_set_mpoly(DerivedMesh *dm, MPoly *mpoly) cddm->mpoly = mpoly; } - -/** Hack to fill in an empty (non library mesh struct) with CDDM values. */ -void CDDM_to_mesh__fast_borrow(DerivedMesh *dm, Mesh *me, const Mesh *me_reference) -{ - CDDerivedMesh *cddm = (CDDerivedMesh *)dm; - me->totvert = cddm->dm.numVertData; - me->totedge = cddm->dm.numEdgeData; - me->totloop = cddm->dm.numLoopData; - me->totpoly = cddm->dm.numPolyData; - - me->mvert = cddm->mvert; - me->medge = cddm->medge; - me->mface = cddm->mface; - me->mloop = cddm->mloop; - me->mpoly = cddm->mpoly; - - me->vdata = dm->vertData; - me->edata = dm->edgeData; - me->ldata = dm->loopData; - me->pdata = dm->polyData; - - if (me_reference) { - me->mat = me_reference->mat; - me->totcol = me_reference->totcol; - } -} diff --git a/source/blender/blenkernel/intern/crazyspace.c b/source/blender/blenkernel/intern/crazyspace.c index 55a62e4981f..bfb6fbd897c 100644 --- a/source/blender/blenkernel/intern/crazyspace.c +++ b/source/blender/blenkernel/intern/crazyspace.c @@ -104,7 +104,7 @@ float (*BKE_crazyspace_get_mapped_editverts( struct Depsgraph *depsgraph, Scene *scene, Object *obedit))[3] { Mesh *me = obedit->data; - DerivedMesh *dm; + Mesh *me_eval; float (*vertexcos)[3]; int nverts = me->edit_btmesh->bm->totvert; @@ -117,11 +117,9 @@ float (*BKE_crazyspace_get_mapped_editverts( /* now get the cage */ vertexcos = MEM_mallocN(sizeof(*vertexcos) * nverts, "vertexcos map"); - dm = editbmesh_get_derived_cage(depsgraph, scene, obedit, me->edit_btmesh, CD_MASK_BAREMESH); - - mesh_get_mapped_verts_coords(dm, vertexcos, nverts); + me_eval = editbmesh_get_eval_cage(depsgraph, scene, obedit, me->edit_btmesh, CD_MASK_BAREMESH); - dm->release(dm); + mesh_get_mapped_verts_coords(me_eval, vertexcos, nverts); /* set back the flag, no new cage needs to be built, transform does it */ modifiers_disable_subsurf_temporary(obedit); diff --git a/source/blender/blenkernel/intern/editderivedmesh.c b/source/blender/blenkernel/intern/editderivedmesh.c index 5ca8bcfd74d..e6873e66c91 100644 --- a/source/blender/blenkernel/intern/editderivedmesh.c +++ b/source/blender/blenkernel/intern/editderivedmesh.c @@ -51,6 +51,7 @@ #include "BKE_cdderivedmesh.h" #include "BKE_deform.h" #include "BKE_mesh.h" +#include "BKE_mesh_iterators.h" #include "BKE_editmesh.h" #include "BKE_editmesh_bvh.h" #include "BKE_editmesh_cache.h" @@ -528,12 +529,12 @@ static void cage_mapped_verts_callback( float (*BKE_editmesh_vertexCos_get(struct Depsgraph *depsgraph, BMEditMesh *em, Scene *scene, int *r_numVerts))[3] { - DerivedMesh *cage, *final; + Mesh *cage, *final; BLI_bitmap *visit_bitmap; struct CageUserData data; float (*cos_cage)[3]; - cage = editbmesh_get_derived_cage_and_final(depsgraph, scene, em->ob, em, CD_MASK_BAREMESH, &final); + cage = editbmesh_get_eval_cage_and_final(depsgraph, scene, em->ob, em, CD_MASK_BAREMESH, &final); cos_cage = MEM_callocN(sizeof(*cos_cage) * em->bm->totvert, "bmbvh cos_cage"); /* when initializing cage verts, we only want the first cage coordinate for each vertex, @@ -544,7 +545,7 @@ float (*BKE_editmesh_vertexCos_get(struct Depsgraph *depsgraph, BMEditMesh *em, data.cos_cage = cos_cage; data.visit_bitmap = visit_bitmap; - cage->foreachMappedVert(cage, cage_mapped_verts_callback, &data, DM_FOREACH_NOP); + BKE_mesh_foreach_mapped_vert(cage, cage_mapped_verts_callback, &data, MESH_FOREACH_NOP); MEM_freeN(visit_bitmap); diff --git a/source/blender/blenkernel/intern/editmesh.c b/source/blender/blenkernel/intern/editmesh.c index 9e1713dc805..0d09f4be39f 100644 --- a/source/blender/blenkernel/intern/editmesh.c +++ b/source/blender/blenkernel/intern/editmesh.c @@ -39,6 +39,7 @@ #include "BKE_editmesh.h" #include "BKE_cdderivedmesh.h" +#include "BKE_library.h" BMEditMesh *BKE_editmesh_create(BMesh *bm, const bool do_tessellate) @@ -58,7 +59,7 @@ BMEditMesh *BKE_editmesh_copy(BMEditMesh *em) BMEditMesh *em_copy = MEM_callocN(sizeof(BMEditMesh), __func__); *em_copy = *em; - em_copy->derivedCage = em_copy->derivedFinal = NULL; + em_copy->mesh_eval_cage = em_copy->mesh_eval_final = NULL; em_copy->derivedVertColor = NULL; em_copy->derivedVertColorLen = 0; @@ -169,16 +170,13 @@ void BKE_editmesh_tessface_calc(BMEditMesh *em) void BKE_editmesh_free_derivedmesh(BMEditMesh *em) { - if (em->derivedCage) { - em->derivedCage->needsFree = 1; - em->derivedCage->release(em->derivedCage); + if (em->mesh_eval_cage) { + BKE_id_free(NULL, em->mesh_eval_cage); } - if (em->derivedFinal && em->derivedFinal != em->derivedCage) { - em->derivedFinal->needsFree = 1; - em->derivedFinal->release(em->derivedFinal); + if (em->mesh_eval_final && em->mesh_eval_final != em->mesh_eval_cage) { + BKE_id_free(NULL, em->mesh_eval_final); } - - em->derivedCage = em->derivedFinal = NULL; + em->mesh_eval_cage = em->mesh_eval_final = NULL; } /*does not free the BMEditMesh struct itself*/ diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 71cf08e267d..b1d994b6e18 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -2052,7 +2052,11 @@ static void give_parvert(Object *par, int nr, float vec[3]) BMEditMesh *em = me->edit_btmesh; DerivedMesh *dm; +#if 0 /* FIXME(campbell): use mesh for both. */ dm = (em) ? em->derivedFinal : par->derivedFinal; +#else + dm = par->derivedFinal; +#endif if (dm) { int count = 0; diff --git a/source/blender/blenkernel/intern/object_dupli.c b/source/blender/blenkernel/intern/object_dupli.c index 6d9520dad1e..d9aa6407474 100644 --- a/source/blender/blenkernel/intern/object_dupli.c +++ b/source/blender/blenkernel/intern/object_dupli.c @@ -488,7 +488,7 @@ static void make_duplis_verts(const DupliContext *ctx) /* We do not need any render-smecific handling anymore, depsgraph takes care of that. */ if (vdd.edit_btmesh != NULL) { - /* XXX TODO replace with equivalent of editbmesh_get_derived_cage when available. */ + /* XXX TODO replace with equivalent of editbmesh_get_eval_cage when available. */ vdd.me_eval = mesh_get_eval_deform(ctx->depsgraph, scene, parent, dm_mask); } else { @@ -758,7 +758,7 @@ static void make_duplis_faces(const DupliContext *ctx) /* We do not need any render-smecific handling anymore, depsgraph takes care of that. */ if (em != NULL) { - /* XXX TODO replace with equivalent of editbmesh_get_derived_cage when available. */ + /* XXX TODO replace with equivalent of editbmesh_get_eval_cage when available. */ fdd.me_eval = mesh_get_eval_deform(ctx->depsgraph, scene, parent, dm_mask); } else { diff --git a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc index 5b52843c1fe..d7575c35e45 100644 --- a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc +++ b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc @@ -466,8 +466,8 @@ void update_mesh_edit_mode_pointers(const Depsgraph *depsgraph, mesh_cow->edit_btmesh = (BMEditMesh *)MEM_dupallocN(mesh_orig->edit_btmesh); mesh_cow->edit_btmesh->ob = (Object *)depsgraph->get_cow_id(&mesh_orig->edit_btmesh->ob->id); - mesh_cow->edit_btmesh->derivedFinal = NULL; - mesh_cow->edit_btmesh->derivedCage = NULL; + mesh_cow->edit_btmesh->mesh_eval_cage = NULL; + mesh_cow->edit_btmesh->mesh_eval_final = NULL; } /* Edit data is stored and owned by original datablocks, copied ones diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c index e1787c2650b..abf6db99f17 100644 --- a/source/blender/draw/intern/draw_cache_impl_mesh.c +++ b/source/blender/draw/intern/draw_cache_impl_mesh.c @@ -4464,12 +4464,13 @@ GPUBatch **DRW_mesh_batch_cache_get_surface_shaded( /* Hack to show the final result. */ const bool use_em_final = ( me->edit_btmesh && - me->edit_btmesh->derivedFinal && - (me->edit_btmesh->derivedFinal->type == DM_TYPE_CDDM)); + me->edit_btmesh->mesh_eval_final && + (me->edit_btmesh->mesh_eval_final->runtime.deformed_only == false)); Mesh me_fake; if (use_em_final) { - memset(&me_fake, 0x0, sizeof(me_fake)); - CDDM_to_mesh__fast_borrow(me->edit_btmesh->derivedFinal, &me_fake, me); + me_fake = *me->edit_btmesh->mesh_eval_final; + me_fake.mat = me->mat; + me_fake.totcol = me->totcol; me = &me_fake; } diff --git a/source/blender/editors/space_view3d/view3d_iterators.c b/source/blender/editors/space_view3d/view3d_iterators.c index 499331639c4..1a3b0bf64cd 100644 --- a/source/blender/editors/space_view3d/view3d_iterators.c +++ b/source/blender/editors/space_view3d/view3d_iterators.c @@ -43,6 +43,7 @@ #include "BKE_editmesh.h" #include "BKE_context.h" #include "BKE_mesh_runtime.h" +#include "BKE_mesh_iterators.h" #include "DEG_depsgraph.h" #include "DEG_depsgraph_query.h" @@ -158,9 +159,8 @@ void mesh_foreachScreenVert( void *userData, eV3DProjTest clip_flag) { foreachScreenVert_userData data; - DerivedMesh *dm; - dm = editbmesh_get_derived_cage(vc->depsgraph, vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH); + Mesh *me = editbmesh_get_eval_cage(vc->depsgraph, vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH); ED_view3d_check_mats_rv3d(vc->rv3d); @@ -174,9 +174,7 @@ void mesh_foreachScreenVert( } BM_mesh_elem_table_ensure(vc->em->bm, BM_VERT); - dm->foreachMappedVert(dm, mesh_foreachScreenVert__mapFunc, &data, DM_FOREACH_NOP); - - dm->release(dm); + BKE_mesh_foreach_mapped_vert(me, mesh_foreachScreenVert__mapFunc, &data, MESH_FOREACH_NOP); } /* ------------------------------------------------------------------------ */ @@ -214,9 +212,8 @@ void mesh_foreachScreenEdge( void *userData, eV3DProjTest clip_flag) { foreachScreenEdge_userData data; - DerivedMesh *dm; - dm = editbmesh_get_derived_cage(vc->depsgraph, vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH); + Mesh *me = editbmesh_get_eval_cage(vc->depsgraph, vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH); ED_view3d_check_mats_rv3d(vc->rv3d); @@ -236,9 +233,7 @@ void mesh_foreachScreenEdge( } BM_mesh_elem_table_ensure(vc->em->bm, BM_EDGE); - dm->foreachMappedEdge(dm, mesh_foreachScreenEdge__mapFunc, &data); - - dm->release(dm); + BKE_mesh_foreach_mapped_edge(me, mesh_foreachScreenEdge__mapFunc, &data); } /* ------------------------------------------------------------------------ */ @@ -262,10 +257,8 @@ void mesh_foreachScreenFace( void *userData, const eV3DProjTest clip_flag) { foreachScreenFace_userData data; - DerivedMesh *dm; - - dm = editbmesh_get_derived_cage(vc->depsgraph, vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH); + Mesh *me = editbmesh_get_eval_cage(vc->depsgraph, vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH); ED_view3d_check_mats_rv3d(vc->rv3d); data.vc = *vc; @@ -274,9 +267,7 @@ void mesh_foreachScreenFace( data.clip_flag = clip_flag; BM_mesh_elem_table_ensure(vc->em->bm, BM_FACE); - dm->foreachMappedFaceCenter(dm, mesh_foreachScreenFace__mapFunc, &data, DM_FOREACH_NOP); - - dm->release(dm); + BKE_mesh_foreach_mapped_face_center(me, mesh_foreachScreenFace__mapFunc, &data, MESH_FOREACH_NOP); } /* ------------------------------------------------------------------------ */ diff --git a/source/blender/editors/util/ed_transverts.c b/source/blender/editors/util/ed_transverts.c index 3cd74f1266f..583d1116eec 100644 --- a/source/blender/editors/util/ed_transverts.c +++ b/source/blender/editors/util/ed_transverts.c @@ -43,6 +43,7 @@ #include "BKE_editmesh.h" #include "BKE_DerivedMesh.h" #include "BKE_context.h" +#include "BKE_mesh_iterators.h" #include "DEG_depsgraph.h" @@ -304,9 +305,9 @@ void ED_transverts_create_from_obedit(TransVertStore *tvs, Object *obedit, const userdata[1] = tvs->transverts; } - if (tvs->transverts && em->derivedCage) { + if (tvs->transverts && em->mesh_eval_cage) { BM_mesh_elem_table_ensure(bm, BM_VERT); - em->derivedCage->foreachMappedVert(em->derivedCage, set_mapped_co, userdata, DM_FOREACH_NOP); + BKE_mesh_foreach_mapped_vert(em->mesh_eval_cage, set_mapped_co, userdata, MESH_FOREACH_NOP); } } else if (obedit->type == OB_ARMATURE) { diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c index 5aa134fc7e1..a6afa39b870 100644 --- a/source/blender/modifiers/intern/MOD_meshdeform.c +++ b/source/blender/modifiers/intern/MOD_meshdeform.c @@ -299,7 +299,7 @@ static void meshdeformModifier_do( * * Only do this is the target object is in edit mode by itself, meaning * we don't allow linked edit meshes here. - * This is because editbmesh_get_derived_cage_and_final() might easily + * This is because editbmesh_get_mesh_cage_and_final() might easily * conflict with the thread which evaluates object which is in the edit * mode for this mesh. * -- cgit v1.2.3