[Bf-blender-cvs] [328f7e13653] master: Fix T63384: Vertices are moving in different directions

Sergey Sharybin noreply at git.blender.org
Wed Jun 5 15:20:21 CEST 2019


Commit: 328f7e13653b7521fed5b92a630d9d9e7be2ce2a
Author: Sergey Sharybin
Date:   Wed Jun 5 15:17:53 2019 +0200
Branches: master
https://developer.blender.org/rB328f7e13653b7521fed5b92a630d9d9e7be2ce2a

Fix T63384: Vertices are moving in different directions

===================================================================

M	source/blender/blenkernel/BKE_crazyspace.h
M	source/blender/blenkernel/intern/crazyspace.c
M	source/blender/editors/transform/transform_conversions.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_crazyspace.h b/source/blender/blenkernel/BKE_crazyspace.h
index 0a57a99ca60..6ac6b17d468 100644
--- a/source/blender/blenkernel/BKE_crazyspace.h
+++ b/source/blender/blenkernel/BKE_crazyspace.h
@@ -35,7 +35,6 @@ struct Scene;
 
 /* crazyspace.c */
 float (*BKE_crazyspace_get_mapped_editverts(struct Depsgraph *depsgraph,
-                                            struct Scene *scene,
                                             struct Object *obedit))[3];
 void BKE_crazyspace_set_quats_editmesh(struct BMEditMesh *em,
                                        float (*origcos)[3],
diff --git a/source/blender/blenkernel/intern/crazyspace.c b/source/blender/blenkernel/intern/crazyspace.c
index a55579d9b61..09bbc6c0d13 100644
--- a/source/blender/blenkernel/intern/crazyspace.c
+++ b/source/blender/blenkernel/intern/crazyspace.c
@@ -99,30 +99,30 @@ static int modifiers_disable_subsurf_temporary(Object *ob)
 }
 
 /* disable subsurf temporal, get mapped cos, and enable it */
-float (*BKE_crazyspace_get_mapped_editverts(struct Depsgraph *depsgraph,
-                                            Scene *scene,
-                                            Object *obedit))[3]
+float (*BKE_crazyspace_get_mapped_editverts(struct Depsgraph *depsgraph, Object *obedit))[3]
 {
-  Mesh *me = obedit->data;
-  Mesh *me_eval;
-  float(*vertexcos)[3];
-  int nverts = me->edit_mesh->bm->totvert;
+  Scene *scene = DEG_get_input_scene(depsgraph);
+  Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
+  Object *obedit_eval = DEG_get_evaluated_object(depsgraph, obedit);
+  Mesh *mesh_eval = obedit_eval->data;
+  BMEditMesh *editmesh_eval = mesh_eval->edit_mesh;
 
   /* disable subsurf temporal, get mapped cos, and enable it */
-  if (modifiers_disable_subsurf_temporary(obedit)) {
+  if (modifiers_disable_subsurf_temporary(obedit_eval)) {
     /* need to make new derivemesh */
-    makeDerivedMesh(depsgraph, scene, obedit, me->edit_mesh, &CD_MASK_BAREMESH);
+    makeDerivedMesh(depsgraph, scene_eval, obedit_eval, editmesh_eval, &CD_MASK_BAREMESH);
   }
 
   /* now get the cage */
-  vertexcos = MEM_mallocN(sizeof(*vertexcos) * nverts, "vertexcos map");
-
-  me_eval = editbmesh_get_eval_cage_from_orig(depsgraph, scene, obedit, &CD_MASK_BAREMESH);
+  Mesh *mesh_eval_cage = editbmesh_get_eval_cage_from_orig(
+      depsgraph, scene, obedit, &CD_MASK_BAREMESH);
 
-  mesh_get_mapped_verts_coords(me_eval, vertexcos, nverts);
+  const int nverts = editmesh_eval->bm->totvert;
+  float(*vertexcos)[3] = MEM_mallocN(sizeof(*vertexcos) * nverts, "vertexcos map");
+  mesh_get_mapped_verts_coords(mesh_eval_cage, vertexcos, nverts);
 
   /* set back the flag, no new cage needs to be built, transform does it */
-  modifiers_disable_subsurf_temporary(obedit);
+  modifiers_disable_subsurf_temporary(obedit_eval);
 
   return vertexcos;
 }
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 52a3763b836..e766709cdf1 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -3074,7 +3074,7 @@ static void createTransEditVerts(TransInfo *t)
       if (totleft > 0)
 #endif
       {
-        mappedcos = BKE_crazyspace_get_mapped_editverts(t->depsgraph, t->scene, tc->obedit);
+        mappedcos = BKE_crazyspace_get_mapped_editverts(t->depsgraph, tc->obedit);
         quats = MEM_mallocN(em->bm->totvert * sizeof(*quats), "crazy quats");
         BKE_crazyspace_set_quats_editmesh(em, defcos, mappedcos, quats, !prop_mode);
         if (mappedcos) {



More information about the Bf-blender-cvs mailing list