diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index b38da1e124b..8573ecb57ea 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -79,6 +79,7 @@ #include "BKE_material.h" #include "BKE_mball.h" #include "BKE_mesh.h" +#include "BKE_mesh_runtime.h" #include "BKE_modifier.h" #include "BKE_node.h" #include "BKE_object.h" @@ -89,6 +90,7 @@ #include "DEG_depsgraph.h" #include "DEG_depsgraph_build.h" +#include "DEG_depsgraph_query.h" #include "WM_api.h" #include "WM_types.h" @@ -137,22 +139,10 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op) /* we need 1 to 3 selected vertices */ if (obedit->type == OB_MESH) { - Mesh *me = obedit->data; - BMEditMesh *em; - EDBM_mesh_load(bmain, obedit); - EDBM_mesh_make(obedit, scene->toolsettings->selectmode, true); - - DEG_id_tag_update(obedit->data, 0); - - em = me->edit_btmesh; - - EDBM_mesh_normals_update(em); - BKE_editmesh_tessface_calc(em); - - /* derivedMesh might be needed for solving parenting, - * so re-create it here */ - makeDerivedMesh(depsgraph, scene, obedit, em, CD_MASK_BAREMESH | CD_MASK_ORIGINDEX, false); + Object *obedit_eval = DEG_get_evaluated_object(depsgraph, obedit); + Mesh *me_eval = mesh_get_eval_final(depsgraph, scene, obedit_eval, CD_MASK_MESH); + BMEditMesh *em = me_eval->edit_btmesh;; BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) { if (BM_elem_flag_test(eve, BM_ELEM_SELECT)) {