Merge branch 'master' into blender2.8
[blender.git] / source / blender / editors / mesh / editmesh_utils.c
index c4440fa190ad463a6675b6d0e6c1d69227034cf7..7b727e75b559f2245c291d945d36466afc6d8406 100644 (file)
@@ -44,7 +44,6 @@
 #include "BKE_DerivedMesh.h"
 #include "BKE_context.h"
 #include "BKE_global.h"
-#include "BKE_depsgraph.h"
 #include "BKE_main.h"
 #include "BKE_mesh.h"
 #include "BKE_mesh_mapping.h"
@@ -52,6 +51,8 @@
 #include "BKE_editmesh.h"
 #include "BKE_editmesh_bvh.h"
 
+#include "DEG_depsgraph.h"
+
 #include "BKE_object.h"  /* XXX. only for EDBM_mesh_load(). */
 
 #include "WM_api.h"
@@ -367,7 +368,7 @@ void EDBM_mesh_make(ToolSettings *ts, Object *ob, const bool add_key_index)
 
 /**
  * \warning This can invalidate the #DerivedMesh cache of other objects (for linked duplicates).
- * Most callers should run #DAG_id_tag_update on \a ob->data, see: T46738, T46913
+ * Most callers should run #DEG_id_tag_update on \a ob->data, see: T46738, T46913
  */
 void EDBM_mesh_load(Object *ob)
 {
@@ -510,7 +511,6 @@ UvVertMap *BM_uv_vert_map_create(
        /* vars from original func */
        UvVertMap *vmap;
        UvMapVert *buf;
-       /* MTexPoly *tf; */ /* UNUSED */
        MLoopUV *luv;
        unsigned int a;
        int totverts, i, totuv, totfaces;
@@ -592,7 +592,6 @@ UvVertMap *BM_uv_vert_map_create(
                        newvlist = v;
 
                        efa = BM_face_at_index(bm, v->f);
-                       /* tf = CustomData_bmesh_get(&bm->pdata, efa->head.data, CD_MTEXPOLY); */ /* UNUSED */
                        
                        l = BM_iter_at_index(bm, BM_LOOPS_OF_FACE, efa, v->tfindex);
                        luv = BM_ELEM_CD_GET_VOID_P(l, cd_loop_uv_offset);
@@ -604,7 +603,6 @@ UvVertMap *BM_uv_vert_map_create(
                        while (iterv) {
                                next = iterv->next;
                                efa = BM_face_at_index(bm, iterv->f);
-                               /* tf = CustomData_bmesh_get(&bm->pdata, efa->head.data, CD_MTEXPOLY); */ /* UNUSED */
                                
                                l = BM_iter_at_index(bm, BM_LOOPS_OF_FACE, efa, iterv->tfindex);
                                luv = BM_ELEM_CD_GET_VOID_P(l, cd_loop_uv_offset);
@@ -919,29 +917,27 @@ UvElement *BM_uv_element_get(UvElementMap *map, BMFace *efa, BMLoop *l)
 
 /* last_sel, use em->act_face otherwise get the last selected face in the editselections
  * at the moment, last_sel is mainly useful for making sure the space image dosnt flicker */
-MTexPoly *EDBM_mtexpoly_active_get(BMEditMesh *em, BMFace **r_act_efa, const bool sloppy, const bool selected)
+BMFace *EDBM_uv_active_face_get(BMEditMesh *em, const bool sloppy, const bool selected)
 {
        BMFace *efa = NULL;
        
-       if (!EDBM_mtexpoly_check(em))
+       if (!EDBM_uv_check(em))
                return NULL;
        
        efa = BM_mesh_active_face_get(em->bm, sloppy, selected);
 
        if (efa) {
-               if (r_act_efa) *r_act_efa = efa;
-               return CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY);
+               return efa;
        }
 
-       if (r_act_efa) *r_act_efa = NULL;
        return NULL;
 }
 
 /* can we edit UV's for this mesh?*/
-bool EDBM_mtexpoly_check(BMEditMesh *em)
+bool EDBM_uv_check(BMEditMesh *em)
 {
        /* some of these checks could be a touch overkill */
-       return em && em->bm->totface && CustomData_has_layer(&em->bm->pdata, CD_MTEXPOLY) &&
+       return em && em->bm->totface &&
               CustomData_has_layer(&em->bm->ldata, CD_MLOOPUV);
 }
 
@@ -1020,7 +1016,7 @@ void EDBM_verts_mirror_cache_begin_ex(BMEditMesh *em, const int axis, const bool
        BM_mesh_elem_index_ensure(bm, BM_VERT);
 
        if (use_topology) {
-               ED_mesh_mirrtopo_init(me, NULL, -1, &mesh_topo_store, true);
+               ED_mesh_mirrtopo_init(me, NULL, &mesh_topo_store, true);
        }
        else {
                tree = BLI_kdtree_new(bm->totvert);
@@ -1270,7 +1266,7 @@ void EDBM_update_generic(BMEditMesh *em, const bool do_tessface, const bool is_d
 {
        Object *ob = em->ob;
        /* order of calling isn't important */
-       DAG_id_tag_update(ob->data, OB_RECALC_DATA);
+       DEG_id_tag_update(ob->data, OB_RECALC_DATA);
        WM_main_add_notifier(NC_GEOM | ND_DATA, ob->data);
 
        if (do_tessface) {
@@ -1399,7 +1395,9 @@ static void scale_point(float c1[3], const float p[3], const float s)
        add_v3_v3(c1, p);
 }
 
-bool BMBVH_EdgeVisible(struct BMBVHTree *tree, BMEdge *e, ARegion *ar, View3D *v3d, Object *obedit)
+bool BMBVH_EdgeVisible(struct BMBVHTree *tree, BMEdge *e,
+                       const struct Depsgraph *depsgraph,
+                       ARegion *ar, View3D *v3d, Object *obedit)
 {
        BMFace *f;
        float co1[3], co2[3], co3[3], dir1[3], dir2[3], dir3[3];
@@ -1409,7 +1407,7 @@ bool BMBVH_EdgeVisible(struct BMBVHTree *tree, BMEdge *e, ARegion *ar, View3D *v
        const float mval_f[2] = {ar->winx / 2.0f,
                                 ar->winy / 2.0f};
 
-       ED_view3d_win_to_segment(ar, v3d, mval_f, origin, end, false);
+       ED_view3d_win_to_segment(depsgraph, ar, v3d, mval_f, origin, end, false);
 
        invert_m4_m4(invmat, obedit->obmat);
        mul_m4_v3(invmat, origin);