Merge branch 'master' into blender2.8
authorSergey Sharybin <sergey.vfx@gmail.com>
Thu, 22 Feb 2018 12:05:00 +0000 (13:05 +0100)
committerSergey Sharybin <sergey.vfx@gmail.com>
Thu, 22 Feb 2018 12:05:00 +0000 (13:05 +0100)
33 files changed:
1  2 
source/blender/blenkernel/BKE_modifier.h
source/blender/depsgraph/intern/builder/deg_builder_relations.cc
source/blender/modifiers/intern/MOD_armature.c
source/blender/modifiers/intern/MOD_array.c
source/blender/modifiers/intern/MOD_boolean.c
source/blender/modifiers/intern/MOD_cast.c
source/blender/modifiers/intern/MOD_cloth.c
source/blender/modifiers/intern/MOD_curve.c
source/blender/modifiers/intern/MOD_datatransfer.c
source/blender/modifiers/intern/MOD_displace.c
source/blender/modifiers/intern/MOD_dynamicpaint.c
source/blender/modifiers/intern/MOD_fluidsim.c
source/blender/modifiers/intern/MOD_hook.c
source/blender/modifiers/intern/MOD_lattice.c
source/blender/modifiers/intern/MOD_mask.c
source/blender/modifiers/intern/MOD_meshdeform.c
source/blender/modifiers/intern/MOD_meshsequencecache.c
source/blender/modifiers/intern/MOD_mirror.c
source/blender/modifiers/intern/MOD_normal_edit.c
source/blender/modifiers/intern/MOD_particleinstance.c
source/blender/modifiers/intern/MOD_screw.c
source/blender/modifiers/intern/MOD_shrinkwrap.c
source/blender/modifiers/intern/MOD_simpledeform.c
source/blender/modifiers/intern/MOD_smoke.c
source/blender/modifiers/intern/MOD_softbody.c
source/blender/modifiers/intern/MOD_surfacedeform.c
source/blender/modifiers/intern/MOD_uvproject.c
source/blender/modifiers/intern/MOD_uvwarp.c
source/blender/modifiers/intern/MOD_warp.c
source/blender/modifiers/intern/MOD_wave.c
source/blender/modifiers/intern/MOD_weightvgedit.c
source/blender/modifiers/intern/MOD_weightvgmix.c
source/blender/modifiers/intern/MOD_weightvgproximity.c

index 8ee67850e5ff6632d1ffcee1df2b1d944ee549af,c4dc4998e355b264516de45dcb67a653321760a8..b687ebd619670e61aad014ec92d3a09ea1c00050
@@@ -267,11 -285,9 +280,8 @@@ typedef struct ModifierTypeInfo 
         *
         * This function is optional.
         */
 -      /* TODO(sergey): Remove once we finally switched to the new depsgraph. */
        void (*updateDepsgraph)(struct ModifierData *md,
-                               struct Main *bmain,
-                               struct Scene *scene,
-                               struct Object *ob,
-                               struct DepsNodeHandle *node);
+                               const ModifierUpdateDepsgraphContext* ctx);
  
        /* Should return true if the modifier needs to be recalculated on time
         * changes.
index 0fd8f30557a24539a8d031d00aa9312073d39f6e,abb1e3674a77a9d7afa8a1c65ef74e023b970b4c..325596f54fe8724bee903735103d7b53de46f2e8
@@@ -1626,22 -1534,16 +1626,27 @@@ void DepsgraphRelationBuilder::build_ob
        /* link components to each other */
        add_relation(obdata_geom_key, geom_key, "Object Geometry Base Data");
  
 +      OperationKey obdata_ubereval_key(&object->id,
 +                                       DEG_NODE_TYPE_GEOMETRY,
 +                                       DEG_OPCODE_GEOMETRY_UBEREVAL);
 +
 +      /* Special case: modifiers and DerivedMesh creation queries scene for various
 +       * things like data mask to be used. We add relation here to ensure object is
 +       * never evaluated prior to Scene's CoW is ready.
 +       */
 +      OperationKey scene_key(&scene_->id,
 +                             DEG_NODE_TYPE_PARAMETERS,
 +                             DEG_OPCODE_PLACEHOLDER,
 +                             "Scene Eval");
 +      add_relation(scene_key, obdata_ubereval_key, "CoW Relation");
 +
        /* Modifiers */
        if (object->modifiers.first != NULL) {
 -              OperationKey obdata_ubereval_key(&object->id,
 -                                               DEG_NODE_TYPE_GEOMETRY,
 -                                               DEG_OPCODE_GEOMETRY_UBEREVAL);
+               ModifierUpdateDepsgraphContext ctx = {};
+               ctx.bmain = bmain_;
+               ctx.scene = scene_;
+               ctx.object = object;
                LISTBASE_FOREACH (ModifierData *, md, &object->modifiers) {
                        const ModifierTypeInfo *mti = modifierType_getInfo((ModifierType)md->type);
                        if (mti->updateDepsgraph) {
index 60c7998853eb4236d79381966d9a645f6ca19612,22ec13cd0a0fc072178181a886791284c7a1b592..f6640704a83a1090a28f673f1a9ad1a055c9f53c
@@@ -97,11 -99,19 +97,7 @@@ static void foreachObjectLink
        walk(userData, ob, &amd->object, IDWALK_CB_NOP);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *UNUSED(ob),
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      ArmatureModifierData *amd = (ArmatureModifierData *) md;
 -
 -      if (amd->object) {
 -              DagNode *curNode = dag_get_node(ctx->forest, amd->object);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode,
 -                               DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Armature Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        ArmatureModifierData *amd = (ArmatureModifierData *)md;
        if (amd->object != NULL) {
index 91501e539c043b33a2e019f0223d2470f27a8707,053957d89e22fa5f6538a108cf37e0cf5d88ac27..7a7a4c4bdad51771cf4d91a0448094aa35e66b8e
@@@ -96,11 -102,38 +96,7 @@@ static void foreachObjectLink
        walk(userData, ob, &amd->offset_ob, IDWALK_CB_NOP);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *UNUSED(ob),
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      ArrayModifierData *amd = (ArrayModifierData *) md;
 -
 -      if (amd->start_cap) {
 -              DagNode *curNode = dag_get_node(ctx->forest, amd->start_cap);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode,
 -                               DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Array Modifier");
 -      }
 -      if (amd->end_cap) {
 -              DagNode *curNode = dag_get_node(ctx->forest, amd->end_cap);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode,
 -                               DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Array Modifier");
 -      }
 -      if (amd->curve_ob) {
 -              DagNode *curNode = dag_get_node(ctx->forest, amd->curve_ob);
 -              curNode->eval_flags |= DAG_EVAL_NEED_CURVE_PATH;
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode,
 -                               DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Array Modifier");
 -      }
 -      if (amd->offset_ob) {
 -              DagNode *curNode = dag_get_node(ctx->forest, amd->offset_ob);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode,
 -                               DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Array Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        ArrayModifierData *amd = (ArrayModifierData *)md;
        if (amd->start_cap != NULL) {
index 7f79c9417705e5f32b46ecea02fe6ca51e2bbc6e,93c4d83870af15a830f9085a72f5dd5a74d89d86..c9d762a7fbe1045ccef0516f97c7289972607e9a
@@@ -95,11 -97,19 +95,7 @@@ static void foreachObjectLink
        walk(userData, ob, &bmd->object, IDWALK_CB_NOP);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *ob,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      BooleanModifierData *bmd = (BooleanModifierData *) md;
 -
 -      if (bmd->object) {
 -              DagNode *curNode = dag_get_node(ctx->forest, bmd->object);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode,
 -                               DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Boolean Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        BooleanModifierData *bmd = (BooleanModifierData *)md;
        if (bmd->object != NULL) {
index 93a5b9607bf3afd12dd3e4806957b7de770e69e8,60465df0492ce058039934cdc2c1c52150dddf59..bf86377960ad55b1a2888efe229d616acb87bc63
@@@ -102,11 -105,19 +102,7 @@@ static void foreachObjectLink
        walk(userData, ob, &cmd->object, IDWALK_CB_NOP);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *object,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      CastModifierData *cmd = (CastModifierData *) md;
 -
 -      if (cmd->object) {
 -              DagNode *curNode = dag_get_node(ctx->forest, cmd->object);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_OB_DATA,
 -                               "Cast Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        CastModifierData *cmd = (CastModifierData *)md;
        if (cmd->object != NULL) {
index b234cc63228bd107daedd35a4990c2a59fb60371,5f806ba4e4c1c57b9db820094c9f8e42c43b7f24..0c55d8f8bebad2b5eac27d6615d9042c12659337
@@@ -114,18 -117,32 +114,14 @@@ static void deformVerts(ModifierData *m
        dm->release(dm);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *scene,
-                             Object *ob,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      ClothModifierData *clmd = (ClothModifierData *) md;
 -      
 -      if (clmd) {
 -              /* Actual code uses get_collisionobjects */
 -#ifdef WITH_LEGACY_DEPSGRAPH
 -              dag_add_collision_relations(ctx->forest, ctx->scene, ctx->object, ctx->obNode, clmd->coll_parms->group, ctx->object->lay|ctx->scene->lay, eModifierType_Collision, NULL, true, "Cloth Collision");
 -              dag_add_forcefield_relations(ctx->forest, ctx->scene, ctx->object, ctx->obNode, clmd->sim_parms->effector_weights, true, 0, "Cloth Field");
 -#else
 -      (void)forest;
 -      (void)scene;
 -      (void)ob;
 -      (void)obNode;
 -#endif
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        ClothModifierData *clmd = (ClothModifierData *)md;
        if (clmd != NULL) {
                /* Actual code uses get_collisionobjects */
-               DEG_add_collision_relations(node, scene, ob, clmd->coll_parms->group, eModifierType_Collision, NULL, true, "Cloth Collision");
 -              DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, clmd->coll_parms->group, ctx->object->lay|ctx->scene->lay, eModifierType_Collision, NULL, true, "Cloth Collision");
++              DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, clmd->coll_parms->group, eModifierType_Collision, NULL, true, "Cloth Collision");
  
-               DEG_add_forcefield_relations(node, scene, ob, clmd->sim_parms->effector_weights, true, 0, "Cloth Field");
+               DEG_add_forcefield_relations(ctx->node, ctx->scene, ctx->object, clmd->sim_parms->effector_weights, true, 0, "Cloth Field");
        }
  }
  
index 62c9f8796a0a39c639d561518792c7716e74807f,7e16bf450fc1750dd070306bcf01b73db5e9c517..acb69de1e858d0bae850bf167c860e4af11ebd61
@@@ -93,11 -92,20 +93,7 @@@ static void foreachObjectLink
        walk(userData, ob, &cmd->object, IDWALK_CB_NOP);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *object,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      CurveModifierData *cmd = (CurveModifierData *) md;
 -
 -      if (cmd->object) {
 -              DagNode *curNode = dag_get_node(ctx->forest, cmd->object);
 -              curNode->eval_flags |= DAG_EVAL_NEED_CURVE_PATH;
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode,
 -                               DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Curve Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        CurveModifierData *cmd = (CurveModifierData *)md;
        if (cmd->object != NULL) {
                DEG_add_special_eval_flag(depsgraph, &cmd->object->id, DAG_EVAL_NEED_CURVE_PATH);
        }
  
-       DEG_add_object_relation(node, object, DEG_OB_COMP_TRANSFORM, "Curve Modifier");
+       DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Curve Modifier");
  }
  
 -static void deformVerts(ModifierData *md, Object *ob,
 -                        DerivedMesh *derivedData,
 +static void deformVerts(ModifierData *md, const struct EvaluationContext *UNUSED(eval_ctx),
 +                        Object *ob, DerivedMesh *derivedData,
                          float (*vertexCos)[3],
                          int numVerts,
                          ModifierApplyFlag UNUSED(flag))
index e7069937868583ce1617a5c8e043aca01540458e,d810978fb0b5e66576cd59464da92b8c54cb6eca..a804a35954c8a1a7a1a02e98a802f02412600c62
@@@ -125,11 -127,20 +125,7 @@@ static void foreachObjectLink
        walk(userData, ob, &dtmd->ob_source, IDWALK_CB_NOP);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *UNUSED(ob),
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      DataTransferModifierData *dtmd = (DataTransferModifierData *) md;
 -      DagNode *curNode;
 -
 -      if (dtmd->ob_source) {
 -              curNode = dag_get_node(ctx->forest, dtmd->ob_source);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
 -                               "DataTransfer Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        DataTransferModifierData *dtmd = (DataTransferModifierData *) md;
        if (dtmd->ob_source != NULL) {
index 53a77b6fe384dd95fd6346033d61e187f02f7dcb,d2d82ca23d2445b321e4af34f94f50bf6d4b935b..f90e6cc1d366fa836436ca826591b6234b146747
@@@ -154,11 -155,28 +154,7 @@@ static bool isDisabled(ModifierData *md
        return ((!dmd->texture && dmd->direction == MOD_DISP_DIR_RGB_XYZ) || dmd->strength == 0.0f);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *ob,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      DisplaceModifierData *dmd = (DisplaceModifierData *) md;
 -
 -      if (dmd->map_object && dmd->texmapping == MOD_DISP_MAP_OBJECT) {
 -              DagNode *curNode = dag_get_node(ctx->forest, dmd->map_object);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode,
 -                               DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Displace Modifier");
 -      }
 -      
 -
 -      if (dmd->texmapping == MOD_DISP_MAP_GLOBAL ||
 -          (ELEM(dmd->direction, MOD_DISP_DIR_X, MOD_DISP_DIR_Y, MOD_DISP_DIR_Z, MOD_DISP_DIR_RGB_XYZ) &&
 -          dmd->space == MOD_DISP_SPACE_GLOBAL))
 -      {
 -              dag_add_relation(ctx->forest, ctx->obNode, ctx->obNode,
 -                               DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Displace Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        DisplaceModifierData *dmd = (DisplaceModifierData *)md;
        if (dmd->map_object != NULL && dmd->texmapping == MOD_DISP_MAP_OBJECT) {
index da5d9a29be53b546e8540806abed67f77cecc694,a610fc6ed8bf5cdeea6134328f1b65659f4efccd..914b41017609937d2f1c058648cc91560787fb35
@@@ -132,11 -130,31 +132,7 @@@ static bool is_brush_cb(Object *UNUSED(
        return ((DynamicPaintModifierData *)pmd)->brush != NULL;
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *scene,
-                             Object *ob,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      DynamicPaintModifierData *pmd = (DynamicPaintModifierData *) md;
 -
 -      /* add relation from canvases to all brush objects */
 -      if (pmd && pmd->canvas) {
 -#ifdef WITH_LEGACY_DEPSGRAPH
 -              for (DynamicPaintSurface *surface = pmd->canvas->surfaces.first; surface; surface = surface->next) {
 -                      if (surface->effect & MOD_DPAINT_EFFECT_DO_DRIP) {
 -                              dag_add_forcefield_relations(ctx->forest, ctx->scene, ctx->object, ctx->obNode, surface->effector_weights, true, 0, "Dynamic Paint Field");
 -                      }
 -
 -                      /* Actual code uses custom loop over group/scene without layer checks in dynamicPaint_doStep */
 -                      dag_add_collision_relations(ctx->forest, ctx->scene, ctx->object, ctx->obNode, surface->brush_group, -1, eModifierType_DynamicPaint, is_brush_cb, false, "Dynamic Paint Brush");
 -              }
 -#else
 -      (void)forest;
 -      (void)scene;
 -      (void)ob;
 -      (void)obNode;
 -#endif
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md;
        /* Add relation from canvases to all brush objects. */
                        }
  
                        /* Actual code uses custom loop over group/scene without layer checks in dynamicPaint_doStep */
-                       DEG_add_collision_relations(node, scene, ob, surface->brush_group,  eModifierType_DynamicPaint, is_brush_cb, false, "Dynamic Paint Brush");
 -                      DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, surface->brush_group, -1, eModifierType_DynamicPaint, is_brush_cb, false, "Dynamic Paint Brush");
++                      DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, surface->brush_group,  eModifierType_DynamicPaint, is_brush_cb, false, "Dynamic Paint Brush");
                }
        }
  }
index 75f57de2a37a71bedad44af05125f7a609053af5,37eabdf24256a29c10d01a5666a42041a0aef69a..27ff1445176949485f1237a9e87d7c08798e3865
@@@ -103,18 -103,39 +103,14 @@@ static DerivedMesh *applyModifier(Modif
        return result ? result : dm;
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *scene,
-                             Object *ob,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      FluidsimModifierData *fluidmd = (FluidsimModifierData *) md;
 -      Base *base;
 -
 -      if (fluidmd && fluidmd->fss) {
 -              if (fluidmd->fss->type == OB_FLUIDSIM_DOMAIN) {
 -                      for (base = ctx->scene->base.first; base; base = base->next) {
 -                              Object *ob1 = base->object;
 -                              if (ob1 != ctx->object) {
 -                                      FluidsimModifierData *fluidmdtmp =
 -                                              (FluidsimModifierData *)modifiers_findByType(ob1, eModifierType_Fluidsim);
 -                                      
 -                                      /* only put dependencies from NON-DOMAIN fluids in here */
 -                                      if (fluidmdtmp && fluidmdtmp->fss && (fluidmdtmp->fss->type != OB_FLUIDSIM_DOMAIN)) {
 -                                              DagNode *curNode = dag_get_node(ctx->forest, ob1);
 -                                              dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Fluidsim Object");
 -                                      }
 -                              }
 -                      }
 -              }
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        FluidsimModifierData *fluidmd = (FluidsimModifierData *) md;
        if (fluidmd && fluidmd->fss) {
                if (fluidmd->fss->type == OB_FLUIDSIM_DOMAIN) {
-                       FOREACH_SCENE_OBJECT(scene, ob1)
 -                      Base *base;
 -                      for (base = ctx->scene->base.first; base; base = base->next) {
 -                              Object *ob1 = base->object;
++                      FOREACH_SCENE_OBJECT(ctx->scene, ob1)
 +                      {
-                               if (ob1 != ob) {
+                               if (ob1 != ctx->object) {
                                        FluidsimModifierData *fluidmdtmp =
                                                (FluidsimModifierData *)modifiers_findByType(ob1, eModifierType_Fluidsim);
  
index 25617c84dacf5bd64364570974bd3b578e952561,80c029157f70e99ced1be1f24e60df8690459f32..00abcc1c65c189e4b6e8643a2515c939c1756af9
@@@ -116,11 -118,21 +116,7 @@@ static void foreachObjectLink
        walk(userData, ob, &hmd->object, IDWALK_CB_NOP);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *ob,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      HookModifierData *hmd = (HookModifierData *) md;
 -
 -      if (hmd->object) {
 -              DagNode *curNode = dag_get_node(ctx->forest, hmd->object);
 -              
 -              if (hmd->subtarget[0])
 -                      dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_OB_DATA | DAG_RL_DATA_DATA, "Hook Modifier");
 -              else
 -                      dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_OB_DATA, "Hook Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        HookModifierData *hmd = (HookModifierData *)md;
        if (hmd->object != NULL) {
index cd8b6139d75c12b32161b1ba59c65b8398de9668,0df6329cf0471a995b0e2b90ae4e586619f3b92a..4bf52f552ce69ea8640aacdcc39b525a728d58ac
@@@ -89,22 -91,30 +89,18 @@@ static void foreachObjectLink
        walk(userData, ob, &lmd->object, IDWALK_CB_NOP);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *object,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      LatticeModifierData *lmd = (LatticeModifierData *) md;
 -
 -      if (lmd->object) {
 -              DagNode *latNode = dag_get_node(ctx->forest, lmd->object);
 -
 -              dag_add_relation(ctx->forest, latNode, ctx->obNode,
 -                               DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Lattice Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        LatticeModifierData *lmd = (LatticeModifierData *)md;
        if (lmd->object != NULL) {
-               DEG_add_object_relation(node, lmd->object, DEG_OB_COMP_GEOMETRY, "Lattice Modifier");
-               DEG_add_object_relation(node, lmd->object, DEG_OB_COMP_TRANSFORM, "Lattice Modifier");
+               DEG_add_object_relation(ctx->node, lmd->object, DEG_OB_COMP_GEOMETRY, "Lattice Modifier");
+               DEG_add_object_relation(ctx->node, lmd->object, DEG_OB_COMP_TRANSFORM, "Lattice Modifier");
        }
-       DEG_add_object_relation(node, object, DEG_OB_COMP_TRANSFORM, "Lattice Modifier");
+       DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Lattice Modifier");
  }
  
 -static void deformVerts(ModifierData *md, Object *ob,
 -                        DerivedMesh *derivedData,
 +static void deformVerts(ModifierData *md, const struct EvaluationContext *UNUSED(eval_ctx),
 +                        Object *ob, DerivedMesh *derivedData,
                          float (*vertexCos)[3],
                          int numVerts,
                          ModifierApplyFlag UNUSED(flag))
index bcebbc40adbd98b2be646b35442ba45393aecabf,351e7116d49af3923759d3324777145a06c6e3f8..080dc371508ff9023116a078e8a1b4c2fbf1ffc4
@@@ -78,11 -79,21 +78,7 @@@ static void foreachObjectLink
        walk(userData, ob, &mmd->ob_arm, IDWALK_CB_NOP);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *UNUSED(ob),
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      MaskModifierData *mmd = (MaskModifierData *)md;
 -
 -      if (mmd->ob_arm) {
 -              bArmature *arm = (bArmature *)mmd->ob_arm->data;
 -              DagNode *armNode = dag_get_node(ctx->forest, mmd->ob_arm);
 -              
 -              /* tag relationship in depsgraph, but also on the armature */
 -              dag_add_relation(ctx->forest, armNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Mask Modifier");
 -              arm->flag |= ARM_HAS_VIZ_DEPS;
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        MaskModifierData *mmd = (MaskModifierData *)md;
        if (mmd->ob_arm) {
index e8fc832b597e378def475a38b487b59d3eabbbfe,c125495a2349d157dd3b264b58265fd5164dc44d..a2ca9bde124829f22ad95be523e49e0754603248
@@@ -122,11 -122,20 +122,7 @@@ static void foreachObjectLink
        walk(userData, ob, &mmd->object, IDWALK_CB_NOP);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *UNUSED(ob),
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      MeshDeformModifierData *mmd = (MeshDeformModifierData *) md;
 -
 -      if (mmd->object) {
 -              DagNode *curNode = dag_get_node(ctx->forest, mmd->object);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode,
 -                               DAG_RL_DATA_DATA | DAG_RL_OB_DATA | DAG_RL_DATA_OB | DAG_RL_OB_OB,
 -                               "Mesh Deform Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        MeshDeformModifierData *mmd = (MeshDeformModifierData *)md;
        if (mmd->object != NULL) {
index e28459814e264b90f2697fd647f1b50bbbc6c889,793edf7c370635a890420d01848d0af3ac74594e..02021c4474900bc49b030b7c486a0db9a6d529df
@@@ -173,11 -174,19 +173,7 @@@ static void foreachIDLink(ModifierData 
  }
  
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *bmain,
-                             struct Scene *scene,
-                             Object *ob,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      MeshSeqCacheModifierData *mcmd = (MeshSeqCacheModifierData *) md;
 -
 -      if (mcmd->cache_file != NULL) {
 -              DagNode *curNode = dag_get_node(ctx->forest, mcmd->cache_file);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode,
 -                               DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Cache File Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        MeshSeqCacheModifierData *mcmd = (MeshSeqCacheModifierData *) md;
  
index 1b725e335a434452f4c31373d448d1f0cecfb85c,1524dbac480b9081292d8170de5624661f7a0c93..62de2711b3d177384f287a2641dd637ab036e4e4
@@@ -76,11 -77,18 +76,7 @@@ static void foreachObjectLink
        walk(userData, ob, &mmd->mirror_ob, IDWALK_CB_NOP);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *ob,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      MirrorModifierData *mmd = (MirrorModifierData *) md;
 -
 -      if (mmd->mirror_ob) {
 -              DagNode *latNode = dag_get_node(ctx->forest, mmd->mirror_ob);
 -
 -              dag_add_relation(ctx->forest, latNode, ctx->obNode, DAG_RL_OB_DATA, "Mirror Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        MirrorModifierData *mmd = (MirrorModifierData *)md;
        if (mmd->mirror_ob != NULL) {
index 61a5b9bb03e60cceaee4a79e57f045c95cbe0eff,0b703fffda3c7b1bc348b9efbc78a8e003044852..4fc49234468d1b82a9a39d872f571fc9f12b6dfd
@@@ -509,11 -511,18 +509,7 @@@ static bool isDisabled(ModifierData *md
        return !is_valid_target(enmd);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *UNUSED(ob),
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      NormalEditModifierData *enmd = (NormalEditModifierData *) md;
 -
 -      if (enmd->target) {
 -              DagNode *Node = dag_get_node(ctx->forest, enmd->target);
 -
 -              dag_add_relation(ctx->forest, Node, ctx->obNode, DAG_RL_OB_DATA, "NormalEdit Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        NormalEditModifierData *enmd = (NormalEditModifierData *) md;
        if (enmd->target) {
index 09966da13a2ce5a1791157f1a958c965dd8e200d,d1c457526c29928e9dc7ef08368d25bd4f7886f7..81f52304b8f5c5f773526e339c5d99c00ce83a95
@@@ -111,11 -112,21 +111,7 @@@ static bool isDisabled(ModifierData *md
        return false;
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *UNUSED(ob),
-                             struct DepsNodeHandle *node)
 -
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      ParticleInstanceModifierData *pimd = (ParticleInstanceModifierData *) md;
 -
 -      if (pimd->ob) {
 -              DagNode *curNode = dag_get_node(ctx->forest, pimd->ob);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode,
 -                               DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
 -                               "Particle Instance Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        ParticleInstanceModifierData *pimd = (ParticleInstanceModifierData *) md;
        if (pimd->ob != NULL) {
index 979dc339e4eb85952e25db7506a59e9b1859fad9,047b1d5c47d0aacebaddf25a91896ca2c7ec49c8..5f30b7622756d737e54a7bc96b624147b83257f7
@@@ -1117,11 -1118,21 +1117,7 @@@ static DerivedMesh *applyModifier(Modif
        return result;
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *UNUSED(ob),
-                             struct DepsNodeHandle *node)
 -
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      ScrewModifierData *ltmd = (ScrewModifierData *) md;
 -
 -      if (ltmd->ob_axis) {
 -              DagNode *curNode = dag_get_node(ctx->forest, ltmd->ob_axis);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode,
 -                               DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
 -                               "Screw Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        ScrewModifierData *ltmd = (ScrewModifierData *)md;
        if (ltmd->ob_axis != NULL) {
index 8b9a7c42eb27a9631646a6565c0aa13748fe9a06,e0f48ae5a2f5d9531fa4f023db1af7f75a670069..e1df65dd748e78d363d9326a949df55a018aa883
@@@ -142,11 -143,20 +142,7 @@@ static void deformVertsEM(ModifierData 
                dm->release(dm);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *UNUSED(ob),
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *) md;
 -
 -      if (smd->target)
 -              dag_add_relation(ctx->forest, dag_get_node(ctx->forest, smd->target), ctx->obNode,
 -                               DAG_RL_OB_DATA | DAG_RL_DATA_DATA, "Shrinkwrap Modifier");
 -
 -      if (smd->auxTarget)
 -              dag_add_relation(ctx->forest, dag_get_node(ctx->forest, smd->auxTarget), ctx->obNode,
 -                               DAG_RL_OB_DATA | DAG_RL_DATA_DATA, "Shrinkwrap Modifier");
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *)md;
        if (smd->target != NULL) {
index 6116e49d07d1d57f9a6b52b700571b9d529607b8,71109922f114ac28d8baa758ed3fce7d28060b7a..8590deb508a8d71fe0b8327015c59a97d3503a62
@@@ -375,11 -378,15 +375,7 @@@ static void foreachObjectLink
        walk(userData, ob, &smd->origin, IDWALK_CB_NOP);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *UNUSED(ob),
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      SimpleDeformModifierData *smd  = (SimpleDeformModifierData *)md;
 -
 -      if (smd->origin)
 -              dag_add_relation(ctx->forest, dag_get_node(ctx->forest, smd->origin), ctx->obNode, DAG_RL_OB_DATA, "SimpleDeform Modifier");
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        SimpleDeformModifierData *smd  = (SimpleDeformModifierData *)md;
        if (smd->origin != NULL) {
index 9881d7ee9b96502fb688fabaccd355ed52ab0d8d,2073e23b7b265738fc4c06760f6581794b9c8d75..e610ef5f78dc37b30b1ab51a985d9c55304674ec
@@@ -131,20 -130,32 +131,16 @@@ static bool is_coll_cb(Object *UNUSED(o
        return (smd->type & MOD_SMOKE_TYPE_COLL) && smd->coll;
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *scene,
-                             Object *ob,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      SmokeModifierData *smd = (SmokeModifierData *) md;
 -
 -      if (smd && (smd->type & MOD_SMOKE_TYPE_DOMAIN) && smd->domain) {
 -              /* Actual code uses get_collisionobjects */
 -#ifdef WITH_LEGACY_DEPSGRAPH
 -              dag_add_collision_relations(ctx->forest, ctx->scene, ctx->object, ctx->obNode, smd->domain->fluid_group, ctx->object->lay|ctx->scene->lay, eModifierType_Smoke, is_flow_cb, true, "Smoke Flow");
 -              dag_add_collision_relations(ctx->forest, ctx->scene, ctx->object, ctx->obNode, smd->domain->coll_group, ctx->object->lay|ctx->scene->lay, eModifierType_Smoke, is_coll_cb, true, "Smoke Coll");
 -              dag_add_forcefield_relations(ctx->forest, ctx->scene, ctx->object, ctx->obNode, smd->domain->effector_weights, true, PFIELD_SMOKEFLOW, "Smoke Force Field");
 -#else
 -      (void)ctx;
 -#endif
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        SmokeModifierData *smd = (SmokeModifierData *)md;
  
        if (smd && (smd->type & MOD_SMOKE_TYPE_DOMAIN) && smd->domain) {
                /* Actual code uses get_collisionobjects */
-               DEG_add_collision_relations(node, scene, ob, smd->domain->fluid_group, eModifierType_Smoke, is_flow_cb, true, "Smoke Flow");
-               DEG_add_collision_relations(node, scene, ob, smd->domain->coll_group, eModifierType_Smoke, is_coll_cb, true, "Smoke Coll");
 -              DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, smd->domain->fluid_group, ctx->object->lay|ctx->scene->lay, eModifierType_Smoke, is_flow_cb, true, "Smoke Flow");
 -              DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, smd->domain->coll_group, ctx->object->lay|ctx->scene->lay, eModifierType_Smoke, is_coll_cb, true, "Smoke Coll");
++              DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, smd->domain->fluid_group, eModifierType_Smoke, is_flow_cb, true, "Smoke Flow");
++              DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, smd->domain->coll_group, eModifierType_Smoke, is_coll_cb, true, "Smoke Coll");
  
-               DEG_add_forcefield_relations(node, scene, ob, smd->domain->effector_weights, true, PFIELD_SMOKEFLOW, "Smoke Force Field");
+               DEG_add_forcefield_relations(ctx->node, ctx->scene, ctx->object, smd->domain->effector_weights, true, PFIELD_SMOKEFLOW, "Smoke Force Field");
        }
  }
  
index d0b1d7361cc9be4d36778e8122c94675589efcb3,e760ff5ca01999955315aa2e6d3cb1bd718aa1de..8d5217391af8403f7ee9abc907a22f842e355042
@@@ -63,17 -62,27 +63,13 @@@ static bool dependsOnTime(ModifierData 
        return true;
  }
  
- static void updateDepsgraph(ModifierData *UNUSED(md),
-                             struct Main *UNUSED(bmain),
-                             struct Scene *scene,
-                             Object *ob,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *UNUSED(md), const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      if (ctx->object->soft) {
 -#ifdef WITH_LEGACY_DEPSGRAPH
 -              /* Actual code uses ccd_build_deflector_hash */
 -              dag_add_collision_relations(ctx->forest, ctx->scene, ctx->object, ctx->obNode, ctx->object->soft->collision_group, ctx->object->lay, eModifierType_Collision, NULL, false, "Softbody Collision");
 -
 -              dag_add_forcefield_relations(ctx->forest, ctx->scene, ctx->object, ctx->obNode, ctx->object->soft->effector_weights, true, 0, "Softbody Field");
 -#else
 -      (void)ctx;
 -#endif
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *UNUSED(md), const ModifierUpdateDepsgraphContext *ctx)
  {
-       if (ob->soft) {
+       if (ctx->object->soft) {
                /* Actual code uses ccd_build_deflector_hash */
-               DEG_add_collision_relations(node, scene, ob, ob->soft->collision_group, eModifierType_Collision, NULL, false, "Softbody Collision");
 -              DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, ctx->object->soft->collision_group, ctx->object->lay, eModifierType_Collision, NULL, false, "Softbody Collision");
++              DEG_add_collision_relations(ctx->node, ctx->scene, ctx->object, ctx->object->soft->collision_group, eModifierType_Collision, NULL, false, "Softbody Collision");
  
-               DEG_add_forcefield_relations(node, scene, ob, ob->soft->effector_weights, true, 0, "Softbody Field");
+               DEG_add_forcefield_relations(ctx->node, ctx->scene, ctx->object, ctx->object->soft->effector_weights, true, 0, "Softbody Field");
        }
  }
  
index 85347288872b504b0a61f0e4efb2b938beb3e585,fc605dd48e12f3e62d1db24d09f646aea94b23ed..e7f283c4a31e01567ba47af86c3b840e9d16bd32
@@@ -170,11 -170,18 +170,7 @@@ static void foreachObjectLink(ModifierD
        walk(userData, ob, &smd->target, IDWALK_NOP);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *UNUSED(ob),
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
 -
 -      if (smd->target) {
 -              DagNode *curNode = dag_get_node(ctx->forest, smd->target);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_DATA_DATA, "Surface Deform Modifier");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
        if (smd->target != NULL) {
index 498dd2486f404c6989359bd67bc1b6e1d3e2b6bd,1cefb07b50acc10d4e6d2a629e0c2249bea50dbf..02f799fecb9d22bc3b6c6b45ee4c1a4b810d39c8
@@@ -109,11 -109,22 +109,7 @@@ static void foreachIDLink(ModifierData 
        foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *UNUSED(ob),
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      UVProjectModifierData *umd = (UVProjectModifierData *) md;
 -      int i;
 -
 -      for (i = 0; i < umd->num_projectors; ++i) {
 -              if (umd->projectors[i]) {
 -                      DagNode *curNode = dag_get_node(ctx->forest, umd->projectors[i]);
 -
 -                      dag_add_relation(ctx->forest, curNode, ctx->obNode,
 -                                       DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "UV Project Modifier");
 -              }
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        UVProjectModifierData *umd = (UVProjectModifierData *)md;
        int i;
index 32974d68d9db37230360737b65656927019ba97c,384efc746660f042da71cb1b3d7af9b12364e994..8af9fd6cde44ecea3dc0df50e0b181220544b5df
@@@ -232,9 -234,30 +232,9 @@@ static void foreachObjectLink(ModifierD
        walk(userData, ob, &umd->object_src, IDWALK_CB_NOP);
  }
  
- static void uv_warp_deps_object_bone(struct DepsNodeHandle *node,
-                                      Object *object,
-                                      const char *bonename)
 -static void uv_warp_deps_object_bone(DagForest *forest, DagNode *obNode,
 -                                     Object *obj, const char *bonename)
 -{
 -      if (obj) {
 -              DagNode *curNode = dag_get_node(forest, obj);
 -
 -              if (bonename[0])
 -                      dag_add_relation(forest, curNode, obNode, DAG_RL_OB_DATA | DAG_RL_DATA_DATA, "UVWarp Modifier");
 -              else
 -                      dag_add_relation(forest, curNode, obNode, DAG_RL_OB_DATA, "UVWarp Modifier");
 -      }
 -}
 -
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      UVWarpModifierData *umd = (UVWarpModifierData *) md;
 -
 -      uv_warp_deps_object_bone(ctx->forest, ctx->obNode, umd->object_src, umd->bone_src);
 -      uv_warp_deps_object_bone(ctx->forest, ctx->obNode, umd->object_dst, umd->bone_dst);
 -}
 -
+ static void uv_warp_deps_object_bone_new(struct DepsNodeHandle *node,
+                                          Object *object,
+                                          const char *bonename)
  {
        if (object != NULL) {
                if (bonename[0])
index be0be2671b946eab241fb09df548803c04f92b06,00d7906a442dbf766e7f36b92dabff878b126c01..204e344b8e1c24c59098e36680048196021589eb
@@@ -137,11 -139,25 +137,7 @@@ static void foreachTexLink(ModifierDat
        walk(userData, ob, md, "texture");
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *UNUSED(ob),
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      WarpModifierData *wmd = (WarpModifierData *) md;
 -
 -      if (wmd->object_from && wmd->object_to) {
 -              DagNode *fromNode = dag_get_node(ctx->forest, wmd->object_from);
 -              DagNode *toNode = dag_get_node(ctx->forest, wmd->object_to);
 -
 -              dag_add_relation(ctx->forest, fromNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Warp Modifier1");
 -              dag_add_relation(ctx->forest, toNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Warp Modifier2");
 -      }
 -
 -      if ((wmd->texmapping == MOD_DISP_MAP_OBJECT) && wmd->map_object) {
 -              DagNode *curNode = dag_get_node(ctx->forest, wmd->map_object);
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Warp Modifier3");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        WarpModifierData *wmd = (WarpModifierData *) md;
        if (wmd->object_from != NULL && wmd->object_to != NULL) {
index 1271cccd7196da659249f1fc73931811d91efa9e,0c3781acb19993e8a8e81a1586f1de5b12a10108..33b2d904c23ca3b0233dcb8dab28da3a8d4d560a
@@@ -127,11 -127,26 +127,7 @@@ static void foreachTexLink(ModifierDat
        walk(userData, ob, md, "texture");
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *UNUSED(ob),
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      WaveModifierData *wmd = (WaveModifierData *) md;
 -
 -      if (wmd->objectcenter) {
 -              DagNode *curNode = dag_get_node(ctx->forest, wmd->objectcenter);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_OB_DATA,
 -                               "Wave Modifier");
 -      }
 -
 -      if (wmd->map_object) {
 -              DagNode *curNode = dag_get_node(ctx->forest, wmd->map_object);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_OB_DATA,
 -                               "Wave Modifer");
 -      }
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        WaveModifierData *wmd = (WaveModifierData *)md;
        if (wmd->objectcenter != NULL) {
index 9aa4bad1707c3f119116a01084b85bc5e8d730fd,aeb3df4262209ec88a9170a59e79aa5d7c017aab..23f36d3bc4ccaa20c2681895277a60613baaf7ca
@@@ -140,11 -141,24 +140,7 @@@ static void foreachTexLink(ModifierDat
        walk(userData, ob, md, "mask_texture");
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *ob,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      WeightVGEditModifierData *wmd = (WeightVGEditModifierData *) md;
 -      DagNode *curNode;
 -
 -      if (wmd->mask_tex_map_obj && wmd->mask_tex_mapping == MOD_DISP_MAP_OBJECT) {
 -              curNode = dag_get_node(ctx->forest, wmd->mask_tex_map_obj);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
 -                               "WeightVGEdit Modifier");
 -      }
 -
 -      if (wmd->mask_tex_mapping == MOD_DISP_MAP_GLOBAL)
 -              dag_add_relation(ctx->forest, ctx->obNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
 -                               "WeightVGEdit Modifier");
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        WeightVGEditModifierData *wmd = (WeightVGEditModifierData *)md;
        if (wmd->mask_tex_map_obj != NULL && wmd->mask_tex_mapping == MOD_DISP_MAP_OBJECT) {
index ab1264cc9a00aedfa36af5fe759f809b804fa8d0,032e154e0968e38230f46c02ed488e143709f854..1947e7e1f0fc0cb95858f50c9e4dfb577eb7397f
@@@ -189,11 -190,24 +189,7 @@@ static void foreachTexLink(ModifierDat
        walk(userData, ob, md, "mask_texture");
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *ob,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      WeightVGMixModifierData *wmd = (WeightVGMixModifierData *) md;
 -      DagNode *curNode;
 -
 -      if (wmd->mask_tex_map_obj && wmd->mask_tex_mapping == MOD_DISP_MAP_OBJECT) {
 -              curNode = dag_get_node(ctx->forest, wmd->mask_tex_map_obj);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
 -                               "WeightVGMix Modifier");
 -      }
 -
 -      if (wmd->mask_tex_mapping == MOD_DISP_MAP_GLOBAL)
 -              dag_add_relation(ctx->forest, ctx->obNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
 -                               "WeightVGMix Modifier");
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        WeightVGMixModifierData *wmd = (WeightVGMixModifierData *) md;
        if (wmd->mask_tex_map_obj != NULL && wmd->mask_tex_mapping == MOD_DISP_MAP_OBJECT) {
index 8a5d0f833a8315f70bc205cdc599dea9525f3b94,cbc62cdace5896380eb76d7ccf016c02253a1378..87c6a03a53682508c8832e31bf096dbd7307cd8b
@@@ -350,11 -351,30 +350,7 @@@ static void foreachTexLink(ModifierDat
        walk(userData, ob, md, "mask_texture");
  }
  
- static void updateDepsgraph(ModifierData *md,
-                             struct Main *UNUSED(bmain),
-                             struct Scene *UNUSED(scene),
-                             Object *ob,
-                             struct DepsNodeHandle *node)
 -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 -{
 -      WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData *) md;
 -      DagNode *curNode;
 -
 -      if (wmd->proximity_ob_target) {
 -              curNode = dag_get_node(ctx->forest, wmd->proximity_ob_target);
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
 -                               "WeightVGProximity Modifier");
 -      }
 -
 -      if (wmd->mask_tex_map_obj && wmd->mask_tex_mapping == MOD_DISP_MAP_OBJECT) {
 -              curNode = dag_get_node(ctx->forest, wmd->mask_tex_map_obj);
 -
 -              dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
 -                               "WeightVGProximity Modifier");
 -      }
 -
 -      if (wmd->mask_tex_mapping == MOD_DISP_MAP_GLOBAL)
 -              dag_add_relation(ctx->forest, ctx->obNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
 -                               "WeightVGProximity Modifier");
 -}
 -
+ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
  {
        WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData *)md;
        if (wmd->proximity_ob_target != NULL) {