Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-12-06 01:38:08 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-12-06 01:38:08 +0300
commit095f9f26aabcc3edd8f7ad4d0e74fb4de979aa1a (patch)
tree77bc2315f2735aecc5a5bb35b26c3f83abac57a3 /source/blender/blenkernel
parent05da1d7fb2f6dafb35549ae376d909e23396f185 (diff)
Fix T57770: Edit-mesh wireframe cage select fails
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_DerivedMesh.h3
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c13
2 files changed, 16 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index e209938cc80..c9ea8b3174c 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -508,6 +508,9 @@ DerivedMesh *mesh_create_derived(struct Mesh *me, float (*vertCos)[3]);
struct Mesh *editbmesh_get_eval_cage(
struct Depsgraph *depsgraph, struct Scene *scene, struct Object *,
struct BMEditMesh *em, CustomDataMask dataMask);
+struct Mesh *editbmesh_get_eval_cage_from_orig(
+ struct Depsgraph *depsgraph, struct Scene *scene, struct Object *,
+ struct BMEditMesh *em, CustomDataMask dataMask);
struct Mesh *editbmesh_get_eval_cage_and_final(
struct Depsgraph *depsgraph, struct Scene *scene, struct Object *,
struct BMEditMesh *em, CustomDataMask dataMask,
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 9880904daf7..a29b0011216 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -2079,6 +2079,8 @@ static void editbmesh_build_data(
struct Depsgraph *depsgraph, Scene *scene,
Object *obedit, BMEditMesh *em, CustomDataMask dataMask)
{
+ BLI_assert(em->ob->id.tag & LIB_TAG_COPIED_ON_WRITE);
+
BKE_object_free_derived_caches(obedit);
BKE_object_sculpt_modifiers_changed(obedit);
@@ -2419,6 +2421,17 @@ Mesh *editbmesh_get_eval_cage(
return em->mesh_eval_cage;
}
+Mesh *editbmesh_get_eval_cage_from_orig(
+ struct Depsgraph *depsgraph, Scene *scene, Object *obedit, BMEditMesh *UNUSED(em),
+ CustomDataMask dataMask)
+{
+ BLI_assert((obedit->id.tag & LIB_TAG_COPIED_ON_WRITE) == 0);
+ Scene *scene_eval = (Scene *)DEG_get_evaluated_id(depsgraph, &scene->id);
+ Object *obedit_eval = (Object *)DEG_get_evaluated_id(depsgraph, &obedit->id);
+ BMEditMesh *em_eval = BKE_editmesh_from_object(obedit_eval);
+ return editbmesh_get_eval_cage(depsgraph, scene_eval, obedit_eval, em_eval, dataMask);
+}
+
/***/
/* UNUSED */