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:
Diffstat (limited to 'source/blender/editors/util/ed_transverts.c')
-rw-r--r--source/blender/editors/util/ed_transverts.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/source/blender/editors/util/ed_transverts.c b/source/blender/editors/util/ed_transverts.c
index 705dfff7260..b9e90670a4d 100644
--- a/source/blender/editors/util/ed_transverts.c
+++ b/source/blender/editors/util/ed_transverts.c
@@ -41,6 +41,7 @@
#include "BKE_editmesh.h"
#include "BKE_lattice.h"
#include "BKE_mesh_iterators.h"
+#include "BKE_object.h"
#include "DEG_depsgraph.h"
@@ -194,12 +195,12 @@ static void set_mapped_co(void *vuserdata, int index, const float co[3], const f
}
}
-bool ED_transverts_check_obedit(Object *obedit)
+bool ED_transverts_check_obedit(const Object *obedit)
{
return (ELEM(obedit->type, OB_ARMATURE, OB_LATTICE, OB_MESH, OB_SURF, OB_CURVE, OB_MBALL));
}
-void ED_transverts_create_from_obedit(TransVertStore *tvs, Object *obedit, const int mode)
+void ED_transverts_create_from_obedit(TransVertStore *tvs, const Object *obedit, const int mode)
{
Nurb *nu;
BezTriple *bezt;
@@ -213,7 +214,7 @@ void ED_transverts_create_from_obedit(TransVertStore *tvs, Object *obedit, const
tvs->transverts_tot = 0;
if (obedit->type == OB_MESH) {
- BMEditMesh *em = BKE_editmesh_from_object(obedit);
+ BMEditMesh *em = BKE_editmesh_from_object((Object *)obedit);
BMesh *bm = em->bm;
BMIter iter;
void *userdata[2] = {em, NULL};
@@ -311,9 +312,13 @@ void ED_transverts_create_from_obedit(TransVertStore *tvs, Object *obedit, const
userdata[1] = tvs->transverts;
}
- if (tvs->transverts && em->mesh_eval_cage) {
- BM_mesh_elem_table_ensure(bm, BM_VERT);
- BKE_mesh_foreach_mapped_vert(em->mesh_eval_cage, set_mapped_co, userdata, MESH_FOREACH_NOP);
+ if (mode & TM_CALC_MAPLOC) {
+ struct Mesh *editmesh_eval_cage = BKE_object_get_editmesh_eval_cage(obedit);
+ if (tvs->transverts && editmesh_eval_cage) {
+ BM_mesh_elem_table_ensure(bm, BM_VERT);
+ BKE_mesh_foreach_mapped_vert(
+ editmesh_eval_cage, set_mapped_co, userdata, MESH_FOREACH_NOP);
+ }
}
}
else if (obedit->type == OB_ARMATURE) {