Merge branch 'master' into blender2.8
[blender.git] / source / blender / editors / sculpt_paint / paint_vertex_proj.c
index 411a0ca9ec3a37f1def7c20ba1854d0d5a0f5ad7..336f851d4c1038a2be25c3bc52e7e6765a2f3b5f 100644 (file)
@@ -42,6 +42,8 @@
 #include "BKE_DerivedMesh.h"
 #include "BKE_context.h"
 
+#include "DEG_depsgraph.h"
+
 #include "ED_screen.h"
 #include "ED_view3d.h"
 
@@ -100,13 +102,13 @@ static void vpaint_proj_dm_map_cosnos_init__map_cb(
 }
 
 static void vpaint_proj_dm_map_cosnos_init(
-        Scene *scene, Object *ob,
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
         struct VertProjHandle *vp_handle)
 {
        Mesh *me = ob->data;
        DerivedMesh *dm;
 
-       dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH | CD_MASK_ORIGINDEX);
+       dm = mesh_get_derived_final(eval_ctx, scene, ob, CD_MASK_BAREMESH | CD_MASK_ORIGINDEX);
 
        if (dm->foreachMappedVert) {
                memset(vp_handle->vcosnos, 0, sizeof(DMCoNo) * me->totvert);
@@ -174,7 +176,7 @@ static void vpaint_proj_dm_map_cosnos_update__map_cb(
 }
 
 static void vpaint_proj_dm_map_cosnos_update(
-        struct VertProjHandle *vp_handle,
+        const struct EvaluationContext *eval_ctx, struct VertProjHandle *vp_handle,
         ARegion *ar, const float mval_fl[2])
 {
        struct VertProjUpdate vp_update = {vp_handle, ar, mval_fl};
@@ -187,7 +189,7 @@ static void vpaint_proj_dm_map_cosnos_update(
        /* quick sanity check - we shouldn't have to run this if there are no modifiers */
        BLI_assert(BLI_listbase_is_empty(&ob->modifiers) == false);
 
-       dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH | CD_MASK_ORIGINDEX);
+       dm = mesh_get_derived_final(eval_ctx, scene, ob, CD_MASK_BAREMESH | CD_MASK_ORIGINDEX);
 
        /* highly unlikely this will become unavailable once painting starts (perhaps with animated modifiers) */
        if (LIKELY(dm->foreachMappedVert)) {
@@ -204,7 +206,7 @@ static void vpaint_proj_dm_map_cosnos_update(
 /* Public Functions */
 
 struct VertProjHandle *ED_vpaint_proj_handle_create(
-        Scene *scene, Object *ob,
+        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
         DMCoNo **r_vcosnos)
 {
        struct VertProjHandle *vp_handle = MEM_mallocN(sizeof(struct VertProjHandle), __func__);
@@ -215,7 +217,7 @@ struct VertProjHandle *ED_vpaint_proj_handle_create(
        vp_handle->use_update = false;
 
        /* sets 'use_update' if needed */
-       vpaint_proj_dm_map_cosnos_init(scene, ob, vp_handle);
+       vpaint_proj_dm_map_cosnos_init(eval_ctx, scene, ob, vp_handle);
 
        if (vp_handle->use_update) {
                vp_handle->dists_sq = MEM_mallocN(sizeof(float) * me->totvert, __func__);
@@ -235,11 +237,11 @@ struct VertProjHandle *ED_vpaint_proj_handle_create(
 }
 
 void  ED_vpaint_proj_handle_update(
-        struct VertProjHandle *vp_handle,
+        const struct EvaluationContext *eval_ctx, struct VertProjHandle *vp_handle,
         ARegion *ar, const float mval_fl[2])
 {
        if (vp_handle->use_update) {
-               vpaint_proj_dm_map_cosnos_update(vp_handle, ar, mval_fl);
+               vpaint_proj_dm_map_cosnos_update(eval_ctx, vp_handle, ar, mval_fl);
        }
 }