Depsgraph: Wrap all arguments foe modifiers relations update into a struct
authorSergey Sharybin <sergey.vfx@gmail.com>
Thu, 22 Feb 2018 11:54:06 +0000 (12:54 +0100)
committerSergey Sharybin <sergey.vfx@gmail.com>
Thu, 22 Feb 2018 11:54:06 +0000 (12:54 +0100)
Makes it easier to add or remove fields needed to update relations.

34 files changed:
source/blender/blenkernel/BKE_modifier.h
source/blender/blenkernel/intern/depsgraph.c
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 30c47a4b192db8d953289f6c3e9651cf920c9ef7..c4dc4998e355b264516de45dcb67a653321760a8 100644 (file)
@@ -127,6 +127,19 @@ typedef enum ModifierApplyFlag {
 } ModifierApplyFlag;
 
 
+typedef struct ModifierUpdateDepsgraphContext {
+       struct Main *bmain;
+       struct Scene *scene;
+       struct Object *object;
+
+       /* Old depsgraph node handle. */
+       struct DagForest *forest;
+       struct DagNode *obNode;
+
+       /* new depsgraph node handle. */
+       struct DepsNodeHandle *node;
+} ModifierUpdateDepsgraphContext;
+
 typedef struct ModifierTypeInfo {
        /* The user visible name for this modifier */
        char name[32];
@@ -265,9 +278,8 @@ typedef struct ModifierTypeInfo {
         *
         * This function is optional.
         */
-       void (*updateDepgraph)(struct ModifierData *md, struct DagForest *forest,
-                              struct Main *bmain, struct Scene *scene,
-                              struct Object *ob, struct DagNode *obNode);
+       void (*updateDepgraph)(struct ModifierData *md,
+                              const ModifierUpdateDepsgraphContext* ctx);
 
        /* Add the appropriate relations to the dependency graph.
         *
@@ -275,10 +287,7 @@ typedef struct ModifierTypeInfo {
         */
        /* 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 0fb9c4408d62cd6a529829226708a38b617ca7c2..99e4a3ab9daa77e656d391d7103df214cd784f26 100644 (file)
@@ -645,11 +645,18 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Main *bmain, Sc
 
        if (ob->modifiers.first) {
                ModifierData *md;
-               
+               ModifierUpdateDepsgraphContext ctx = {
+                       .bmain = bmain,
+                       .scene = scene,
+                       .object = ob,
+
+                       .forest = dag,
+                       .obNode = node,
+               };
                for (md = ob->modifiers.first; md; md = md->next) {
                        const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
                        
-                       if (mti->updateDepgraph) mti->updateDepgraph(md, dag, bmain, scene, ob, node);
+                       if (mti->updateDepgraph) mti->updateDepgraph(md, &ctx);
                }
        }
        if (ob->parent) {
index c47006a78956e8f8a0da19b23b24910cd8b79531..abb1e3674a77a9d7afa8a1c65ef74e023b970b4c 100644 (file)
@@ -1539,17 +1539,17 @@ void DepsgraphRelationBuilder::build_obdata_geom(Object *object)
                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) {
                                DepsNodeHandle handle = create_node_handle(obdata_ubereval_key);
-                               mti->updateDepsgraph(
-                                       md,
-                                       bmain_,
-                                       scene_,
-                                       object,
-                                       reinterpret_cast< ::DepsNodeHandle* >(&handle));
+                               ctx.node = reinterpret_cast< ::DepsNodeHandle* >(&handle);
+                               mti->updateDepsgraph(md, &ctx);
                        }
                        if (BKE_object_modifier_use_time(object, md)) {
                                TimeSourceKey time_src_key;
index f2f76f138833ea7c72ca690dc01d3d5fb3dae427..22ec13cd0a0fc072178181a886791284c7a1b592 100644 (file)
@@ -99,32 +99,24 @@ static void foreachObjectLink(
        walk(userData, ob, &amd->object, IDWALK_CB_NOP);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        ArmatureModifierData *amd = (ArmatureModifierData *) md;
 
        if (amd->object) {
-               DagNode *curNode = dag_get_node(forest, amd->object);
+               DagNode *curNode = dag_get_node(ctx->forest, amd->object);
 
-               dag_add_relation(forest, curNode, obNode,
+               dag_add_relation(ctx->forest, curNode, ctx->obNode,
                                 DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Armature Modifier");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        ArmatureModifierData *amd = (ArmatureModifierData *)md;
        if (amd->object != NULL) {
-               DEG_add_object_relation(node, amd->object, DEG_OB_COMP_EVAL_POSE, "Armature Modifier");
-               DEG_add_object_relation(node, amd->object, DEG_OB_COMP_TRANSFORM, "Armature Modifier");
+               DEG_add_object_relation(ctx->node, amd->object, DEG_OB_COMP_EVAL_POSE, "Armature Modifier");
+               DEG_add_object_relation(ctx->node, amd->object, DEG_OB_COMP_TRANSFORM, "Armature Modifier");
        }
 }
 
index 8eda1653956d878f387663c45ab87c4cf73101d9..053957d89e22fa5f6538a108cf37e0cf5d88ac27 100644 (file)
@@ -102,60 +102,53 @@ static void foreachObjectLink(
        walk(userData, ob, &amd->offset_ob, IDWALK_CB_NOP);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob), DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        ArrayModifierData *amd = (ArrayModifierData *) md;
 
        if (amd->start_cap) {
-               DagNode *curNode = dag_get_node(forest, amd->start_cap);
+               DagNode *curNode = dag_get_node(ctx->forest, amd->start_cap);
 
-               dag_add_relation(forest, curNode, obNode,
+               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(forest, amd->end_cap);
+               DagNode *curNode = dag_get_node(ctx->forest, amd->end_cap);
 
-               dag_add_relation(forest, curNode, obNode,
+               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(forest, amd->curve_ob);
+               DagNode *curNode = dag_get_node(ctx->forest, amd->curve_ob);
                curNode->eval_flags |= DAG_EVAL_NEED_CURVE_PATH;
 
-               dag_add_relation(forest, curNode, obNode,
+               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(forest, amd->offset_ob);
+               DagNode *curNode = dag_get_node(ctx->forest, amd->offset_ob);
 
-               dag_add_relation(forest, curNode, obNode,
+               dag_add_relation(ctx->forest, curNode, ctx->obNode,
                                 DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Array Modifier");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        ArrayModifierData *amd = (ArrayModifierData *)md;
        if (amd->start_cap != NULL) {
-               DEG_add_object_relation(node, amd->start_cap, DEG_OB_COMP_TRANSFORM, "Array Modifier Start Cap");
+               DEG_add_object_relation(ctx->node, amd->start_cap, DEG_OB_COMP_TRANSFORM, "Array Modifier Start Cap");
        }
        if (amd->end_cap != NULL) {
-               DEG_add_object_relation(node, amd->end_cap, DEG_OB_COMP_TRANSFORM, "Array Modifier End Cap");
+               DEG_add_object_relation(ctx->node, amd->end_cap, DEG_OB_COMP_TRANSFORM, "Array Modifier End Cap");
        }
        if (amd->curve_ob) {
-               struct Depsgraph *depsgraph = DEG_get_graph_from_handle(node);
-               DEG_add_object_relation(node, amd->curve_ob, DEG_OB_COMP_GEOMETRY, "Array Modifier Curve");
+               struct Depsgraph *depsgraph = DEG_get_graph_from_handle(ctx->node);
+               DEG_add_object_relation(ctx->node, amd->curve_ob, DEG_OB_COMP_GEOMETRY, "Array Modifier Curve");
                DEG_add_special_eval_flag(depsgraph, &amd->curve_ob->id, DAG_EVAL_NEED_CURVE_PATH);
        }
        if (amd->offset_ob != NULL) {
-               DEG_add_object_relation(node, amd->offset_ob, DEG_OB_COMP_TRANSFORM, "Array Modifier Offset");
+               DEG_add_object_relation(ctx->node, amd->offset_ob, DEG_OB_COMP_TRANSFORM, "Array Modifier Offset");
        }
 }
 
index 2a6bf108f25540c6a5cf6d6223ea8af783c59354..93c4d83870af15a830f9085a72f5dd5a74d89d86 100644 (file)
@@ -97,35 +97,27 @@ static void foreachObjectLink(
        walk(userData, ob, &bmd->object, IDWALK_CB_NOP);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        BooleanModifierData *bmd = (BooleanModifierData *) md;
 
        if (bmd->object) {
-               DagNode *curNode = dag_get_node(forest, bmd->object);
+               DagNode *curNode = dag_get_node(ctx->forest, bmd->object);
 
-               dag_add_relation(forest, curNode, obNode,
+               dag_add_relation(ctx->forest, curNode, ctx->obNode,
                                 DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Boolean Modifier");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *ob,
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        BooleanModifierData *bmd = (BooleanModifierData *)md;
        if (bmd->object != NULL) {
-               DEG_add_object_relation(node, bmd->object, DEG_OB_COMP_TRANSFORM, "Boolean Modifier");
-               DEG_add_object_relation(node, bmd->object, DEG_OB_COMP_GEOMETRY, "Boolean Modifier");
+               DEG_add_object_relation(ctx->node, bmd->object, DEG_OB_COMP_TRANSFORM, "Boolean Modifier");
+               DEG_add_object_relation(ctx->node, bmd->object, DEG_OB_COMP_GEOMETRY, "Boolean Modifier");
        }
        /* We need own transformation as well. */
-       DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "Boolean Modifier");
+       DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Boolean Modifier");
 }
 
 static DerivedMesh *get_quick_derivedMesh(
index ddcf1852dc6395d9e5ee22a192f02db8d27d64ee..60465df0492ce058039934cdc2c1c52150dddf59 100644 (file)
@@ -105,32 +105,24 @@ static void foreachObjectLink(
        walk(userData, ob, &cmd->object, IDWALK_CB_NOP);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        CastModifierData *cmd = (CastModifierData *) md;
 
        if (cmd->object) {
-               DagNode *curNode = dag_get_node(forest, cmd->object);
+               DagNode *curNode = dag_get_node(ctx->forest, cmd->object);
 
-               dag_add_relation(forest, curNode, obNode, DAG_RL_OB_DATA,
+               dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_OB_DATA,
                                 "Cast Modifier");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *object,
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        CastModifierData *cmd = (CastModifierData *)md;
        if (cmd->object != NULL) {
-               DEG_add_object_relation(node, cmd->object, DEG_OB_COMP_TRANSFORM, "Cast Modifier");
-               DEG_add_object_relation(node, object, DEG_OB_COMP_TRANSFORM, "Cast Modifier");
+               DEG_add_object_relation(ctx->node, cmd->object, DEG_OB_COMP_TRANSFORM, "Cast Modifier");
+               DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Cast Modifier");
        }
 }
 
index e8c39770a14ba75f6bb5766332efda1fe9ce8d48..5f806ba4e4c1c57b9db820094c9f8e42c43b7f24 100644 (file)
@@ -117,17 +117,15 @@ static void deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData,
        dm->release(dm);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           Scene *scene, Object *ob, DagNode *obNode)
+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(forest, scene, ob, obNode, clmd->coll_parms->group, ob->lay|scene->lay, eModifierType_Collision, NULL, true, "Cloth Collision");
-               dag_add_forcefield_relations(forest, scene, ob, obNode, clmd->sim_parms->effector_weights, true, 0, "Cloth Field");
+               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;
@@ -137,18 +135,14 @@ static void updateDepgraph(ModifierData *md, DagForest *forest,
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *scene,
-                            Object *ob,
-                            struct DepsNodeHandle *node)
+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, ob->lay|scene->lay, 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_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 c9a910d769b9a4f9e07d29613c2704119629a89c..7e16bf450fc1750dd070306bcf01b73db5e9c517 100644 (file)
@@ -92,28 +92,20 @@ static void foreachObjectLink(
        walk(userData, ob, &cmd->object, IDWALK_CB_NOP);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        CurveModifierData *cmd = (CurveModifierData *) md;
 
        if (cmd->object) {
-               DagNode *curNode = dag_get_node(forest, cmd->object);
+               DagNode *curNode = dag_get_node(ctx->forest, cmd->object);
                curNode->eval_flags |= DAG_EVAL_NEED_CURVE_PATH;
 
-               dag_add_relation(forest, curNode, obNode,
+               dag_add_relation(ctx->forest, curNode, ctx->obNode,
                                 DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Curve Modifier");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *object,
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        CurveModifierData *cmd = (CurveModifierData *)md;
        if (cmd->object != NULL) {
@@ -123,12 +115,12 @@ static void updateDepsgraph(ModifierData *md,
                /* TODO(sergey): Currently path is evaluated as a part of modifier stack,
                 * might be changed in the future.
                 */
-               struct Depsgraph *depsgraph = DEG_get_graph_from_handle(node);
-               DEG_add_object_relation(node, cmd->object, DEG_OB_COMP_GEOMETRY, "Curve Modifier");
+               struct Depsgraph *depsgraph = DEG_get_graph_from_handle(ctx->node);
+               DEG_add_object_relation(ctx->node, cmd->object, DEG_OB_COMP_GEOMETRY, "Curve Modifier");
                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,
index a22108936024b1cba730bc20bf867b49221b59a1..d810978fb0b5e66576cd59464da92b8c54cb6eca 100644 (file)
@@ -127,31 +127,24 @@ static void foreachObjectLink(
        walk(userData, ob, &dtmd->ob_source, IDWALK_CB_NOP);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob), DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        DataTransferModifierData *dtmd = (DataTransferModifierData *) md;
        DagNode *curNode;
 
        if (dtmd->ob_source) {
-               curNode = dag_get_node(forest, dtmd->ob_source);
+               curNode = dag_get_node(ctx->forest, dtmd->ob_source);
 
-               dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
+               dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
                                 "DataTransfer Modifier");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        DataTransferModifierData *dtmd = (DataTransferModifierData *) md;
        if (dtmd->ob_source != NULL) {
-               DEG_add_object_relation(node, dtmd->ob_source, DEG_OB_COMP_GEOMETRY, "DataTransfer Modifier");
+               DEG_add_object_relation(ctx->node, dtmd->ob_source, DEG_OB_COMP_GEOMETRY, "DataTransfer Modifier");
        }
 }
 
index 7651675934cf7a57dc814771aeae36f370af3c17..d2d82ca23d2445b321e4af34f94f50bf6d4b935b 100644 (file)
@@ -155,18 +155,14 @@ static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
        return ((!dmd->texture && dmd->direction == MOD_DISP_DIR_RGB_XYZ) || dmd->strength == 0.0f);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+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(forest, dmd->map_object);
+               DagNode *curNode = dag_get_node(ctx->forest, dmd->map_object);
 
-               dag_add_relation(forest, curNode, obNode,
+               dag_add_relation(ctx->forest, curNode, ctx->obNode,
                                 DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Displace Modifier");
        }
        
@@ -175,26 +171,22 @@ static void updateDepgraph(ModifierData *md, DagForest *forest,
            (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(forest, obNode, obNode,
+               dag_add_relation(ctx->forest, ctx->obNode, ctx->obNode,
                                 DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Displace Modifier");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *ob,
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        DisplaceModifierData *dmd = (DisplaceModifierData *)md;
        if (dmd->map_object != NULL && dmd->texmapping == MOD_DISP_MAP_OBJECT) {
-               DEG_add_object_relation(node, dmd->map_object, DEG_OB_COMP_TRANSFORM, "Displace Modifier");
+               DEG_add_object_relation(ctx->node, dmd->map_object, DEG_OB_COMP_TRANSFORM, "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))
        {
-               DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "Displace Modifier");
+               DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Displace Modifier");
        }
 }
 
index cf777fc82ce5e0d3cf0953924959df1b3b71a46d..a610fc6ed8bf5cdeea6134328f1b65659f4efccd 100644 (file)
@@ -130,11 +130,7 @@ static bool is_brush_cb(Object *UNUSED(ob), ModifierData *pmd)
        return ((DynamicPaintModifierData *)pmd)->brush != NULL;
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *scene,
-                           Object *ob,
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData *) md;
 
@@ -143,11 +139,11 @@ static void updateDepgraph(ModifierData *md, DagForest *forest,
 #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(forest, scene, ob, obNode, surface->effector_weights, true, 0, "Dynamic Paint Field");
+                               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(forest, scene, ob, obNode, surface->brush_group, -1, eModifierType_DynamicPaint, is_brush_cb, false, "Dynamic Paint Brush");
+                       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;
@@ -158,22 +154,18 @@ static void updateDepgraph(ModifierData *md, DagForest *forest,
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *scene,
-                            Object *ob,
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md;
        /* Add relation from canvases to all brush objects. */
        if (pmd->canvas != NULL) {
                for (DynamicPaintSurface *surface = pmd->canvas->surfaces.first; surface; surface = surface->next) {
                        if (surface->effect & MOD_DPAINT_EFFECT_DO_DRIP) {
-                               DEG_add_forcefield_relations(node, scene, ob, surface->effector_weights, true, 0, "Dynamic Paint Field");
+                               DEG_add_forcefield_relations(ctx->node, ctx->scene, ctx->object, surface->effector_weights, true, 0, "Dynamic Paint Field");
                        }
 
                        /* Actual code uses custom loop over group/scene without layer checks in dynamicPaint_doStep */
-                       DEG_add_collision_relations(node, scene, ob, 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, -1, eModifierType_DynamicPaint, is_brush_cb, false, "Dynamic Paint Brush");
                }
        }
 }
index 368c820969427453844cd0e5c3817e1e5eec0877..37eabdf24256a29c10d01a5666a42041a0aef69a 100644 (file)
@@ -103,26 +103,23 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
        return result ? result : dm;
 }
 
-static void updateDepgraph(
-        ModifierData *md, DagForest *forest,
-        struct Main *UNUSED(bmain), Scene *scene,
-        Object *ob, DagNode *obNode)
+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 = scene->base.first; base; base = base->next) {
+                       for (base = ctx->scene->base.first; base; base = base->next) {
                                Object *ob1 = base->object;
-                               if (ob1 != ob) {
+                               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(forest, ob1);
-                                               dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Fluidsim Object");
+                                               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");
                                        }
                                }
                        }
@@ -130,25 +127,21 @@ static void updateDepgraph(
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *scene,
-                            Object *ob,
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        FluidsimModifierData *fluidmd = (FluidsimModifierData *) md;
        if (fluidmd && fluidmd->fss) {
                if (fluidmd->fss->type == OB_FLUIDSIM_DOMAIN) {
                        Base *base;
-                       for (base = scene->base.first; base; base = base->next) {
+                       for (base = ctx->scene->base.first; base; base = base->next) {
                                Object *ob1 = base->object;
-                               if (ob1 != ob) {
+                               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)) {
-                                               DEG_add_object_relation(node, ob1, DEG_OB_COMP_TRANSFORM, "Fluidsim Object");
+                                               DEG_add_object_relation(ctx->node, ob1, DEG_OB_COMP_TRANSFORM, "Fluidsim Object");
                                        }
                                }
                        }
index 56c494ff3c0287a4e169dad65591f5a1829eaec5..80c029157f70e99ced1be1f24e60df8690459f32 100644 (file)
@@ -118,39 +118,31 @@ static void foreachObjectLink(
        walk(userData, ob, &hmd->object, IDWALK_CB_NOP);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        HookModifierData *hmd = (HookModifierData *) md;
 
        if (hmd->object) {
-               DagNode *curNode = dag_get_node(forest, hmd->object);
+               DagNode *curNode = dag_get_node(ctx->forest, hmd->object);
                
                if (hmd->subtarget[0])
-                       dag_add_relation(forest, curNode, obNode, DAG_RL_OB_DATA | DAG_RL_DATA_DATA, "Hook Modifier");
+                       dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_OB_DATA | DAG_RL_DATA_DATA, "Hook Modifier");
                else
-                       dag_add_relation(forest, curNode, obNode, DAG_RL_OB_DATA, "Hook Modifier");
+                       dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_OB_DATA, "Hook Modifier");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *ob,
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        HookModifierData *hmd = (HookModifierData *)md;
        if (hmd->object != NULL) {
                if (hmd->subtarget[0]) {
-                       DEG_add_bone_relation(node, hmd->object, hmd->subtarget, DEG_OB_COMP_BONE, "Hook Modifier");
+                       DEG_add_bone_relation(ctx->node, hmd->object, hmd->subtarget, DEG_OB_COMP_BONE, "Hook Modifier");
                }
-               DEG_add_object_relation(node, hmd->object, DEG_OB_COMP_TRANSFORM, "Hook Modifier");
+               DEG_add_object_relation(ctx->node, hmd->object, DEG_OB_COMP_TRANSFORM, "Hook Modifier");
        }
        /* We need own transformation as well. */
-       DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "Hook Modifier");
+       DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Hook Modifier");
 }
 
 struct HookData_cb {
index dc246084dca2737b8b7408d33f4b2c73ad69bf09..0df6329cf0471a995b0e2b90ae4e586619f3b92a 100644 (file)
@@ -91,34 +91,26 @@ static void foreachObjectLink(
        walk(userData, ob, &lmd->object, IDWALK_CB_NOP);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        LatticeModifierData *lmd = (LatticeModifierData *) md;
 
        if (lmd->object) {
-               DagNode *latNode = dag_get_node(forest, lmd->object);
+               DagNode *latNode = dag_get_node(ctx->forest, lmd->object);
 
-               dag_add_relation(forest, latNode, obNode,
+               dag_add_relation(ctx->forest, latNode, ctx->obNode,
                                 DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Lattice Modifier");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *object,
-                            struct DepsNodeHandle *node)
+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,
index 508897ec4fd6960ad8264b89ca5d1aa6d58105ea..351e7116d49af3923759d3324777145a06c6e3f8 100644 (file)
@@ -79,36 +79,28 @@ static void foreachObjectLink(
        walk(userData, ob, &mmd->ob_arm, IDWALK_CB_NOP);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+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(forest, mmd->ob_arm);
+               DagNode *armNode = dag_get_node(ctx->forest, mmd->ob_arm);
                
                /* tag relationship in depsgraph, but also on the armature */
-               dag_add_relation(forest, armNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Mask Modifier");
+               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,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        MaskModifierData *mmd = (MaskModifierData *)md;
        if (mmd->ob_arm) {
                bArmature *arm = (bArmature *)mmd->ob_arm->data;
                /* Tag relationship in depsgraph, but also on the armature. */
                /* TODO(sergey): Is it a proper relation here? */
-               DEG_add_object_relation(node, mmd->ob_arm, DEG_OB_COMP_TRANSFORM, "Mask Modifier");
+               DEG_add_object_relation(ctx->node, mmd->ob_arm, DEG_OB_COMP_TRANSFORM, "Mask Modifier");
                arm->flag |= ARM_HAS_VIZ_DEPS;
        }
 }
index 99f0c892a3f42ecdd5a4e103236feac2ecbe2b80..c125495a2349d157dd3b264b58265fd5164dc44d 100644 (file)
@@ -122,33 +122,25 @@ static void foreachObjectLink(
        walk(userData, ob, &mmd->object, IDWALK_CB_NOP);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        MeshDeformModifierData *mmd = (MeshDeformModifierData *) md;
 
        if (mmd->object) {
-               DagNode *curNode = dag_get_node(forest, mmd->object);
+               DagNode *curNode = dag_get_node(ctx->forest, mmd->object);
 
-               dag_add_relation(forest, curNode, obNode,
+               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,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        MeshDeformModifierData *mmd = (MeshDeformModifierData *)md;
        if (mmd->object != NULL) {
                /* TODO(sergey): Do we need transform component here? */
-               DEG_add_object_relation(node, mmd->object, DEG_OB_COMP_GEOMETRY, "Mesh Deform Modifier");
+               DEG_add_object_relation(ctx->node, mmd->object, DEG_OB_COMP_GEOMETRY, "Mesh Deform Modifier");
        }
 }
 
index 3e527489d20f31c4689302e519589a93474a5157..793edf7c370635a890420d01848d0af3ac74594e 100644 (file)
@@ -174,36 +174,25 @@ static void foreachIDLink(ModifierData *md, Object *ob,
 }
 
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *bmain,
-                           struct Scene *scene,
-                           Object *ob, DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        MeshSeqCacheModifierData *mcmd = (MeshSeqCacheModifierData *) md;
 
        if (mcmd->cache_file != NULL) {
-               DagNode *curNode = dag_get_node(forest, mcmd->cache_file);
+               DagNode *curNode = dag_get_node(ctx->forest, mcmd->cache_file);
 
-               dag_add_relation(forest, curNode, obNode,
+               dag_add_relation(ctx->forest, curNode, ctx->obNode,
                                 DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Cache File Modifier");
        }
-
-       UNUSED_VARS(bmain, scene, ob);
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *bmain,
-                            struct Scene *scene,
-                            Object *ob,
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        MeshSeqCacheModifierData *mcmd = (MeshSeqCacheModifierData *) md;
 
        if (mcmd->cache_file != NULL) {
-               DEG_add_object_cache_relation(node, mcmd->cache_file, DEG_OB_COMP_CACHE, "Mesh Cache File");
+               DEG_add_object_cache_relation(ctx->node, mcmd->cache_file, DEG_OB_COMP_CACHE, "Mesh Cache File");
        }
-
-       UNUSED_VARS(bmain, scene, ob);
 }
 
 ModifierTypeInfo modifierType_MeshSequenceCache = {
index 6925e40a8c6131fce4ebf429ccb5697c383ab4fd..1524dbac480b9081292d8170de5624661f7a0c93 100644 (file)
@@ -77,32 +77,24 @@ static void foreachObjectLink(
        walk(userData, ob, &mmd->mirror_ob, IDWALK_CB_NOP);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        MirrorModifierData *mmd = (MirrorModifierData *) md;
 
        if (mmd->mirror_ob) {
-               DagNode *latNode = dag_get_node(forest, mmd->mirror_ob);
+               DagNode *latNode = dag_get_node(ctx->forest, mmd->mirror_ob);
 
-               dag_add_relation(forest, latNode, obNode, DAG_RL_OB_DATA, "Mirror Modifier");
+               dag_add_relation(ctx->forest, latNode, ctx->obNode, DAG_RL_OB_DATA, "Mirror Modifier");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *ob,
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        MirrorModifierData *mmd = (MirrorModifierData *)md;
        if (mmd->mirror_ob != NULL) {
-               DEG_add_object_relation(node, mmd->mirror_ob, DEG_OB_COMP_TRANSFORM, "Mirror Modifier");
+               DEG_add_object_relation(ctx->node, mmd->mirror_ob, DEG_OB_COMP_TRANSFORM, "Mirror Modifier");
        }
-       DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "Mirror Modifier");
+       DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Mirror Modifier");
 }
 
 static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd,
index af20d06a5a24f9ae5030d33f097fd4ae109089c8..0b703fffda3c7b1bc348b9efbc78a8e003044852 100644 (file)
@@ -511,29 +511,22 @@ static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
        return !is_valid_target(enmd);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob), DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        NormalEditModifierData *enmd = (NormalEditModifierData *) md;
 
        if (enmd->target) {
-               DagNode *Node = dag_get_node(forest, enmd->target);
+               DagNode *Node = dag_get_node(ctx->forest, enmd->target);
 
-               dag_add_relation(forest, Node, obNode, DAG_RL_OB_DATA, "NormalEdit Modifier");
+               dag_add_relation(ctx->forest, Node, ctx->obNode, DAG_RL_OB_DATA, "NormalEdit Modifier");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        NormalEditModifierData *enmd = (NormalEditModifierData *) md;
        if (enmd->target) {
-               DEG_add_object_relation(node, enmd->target, DEG_OB_COMP_TRANSFORM, "NormalEdit Modifier");
+               DEG_add_object_relation(ctx->node, enmd->target, DEG_OB_COMP_TRANSFORM, "NormalEdit Modifier");
        }
 }
 
index 22e83d9daef631d12031192aa2666f422a838c4f..d1c457526c29928e9dc7ef08368d25bd4f7886f7 100644 (file)
@@ -113,32 +113,24 @@ static bool isDisabled(ModifierData *md, int useRenderParams)
 }
 
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        ParticleInstanceModifierData *pimd = (ParticleInstanceModifierData *) md;
 
        if (pimd->ob) {
-               DagNode *curNode = dag_get_node(forest, pimd->ob);
+               DagNode *curNode = dag_get_node(ctx->forest, pimd->ob);
 
-               dag_add_relation(forest, curNode, obNode,
+               dag_add_relation(ctx->forest, curNode, ctx->obNode,
                                 DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
                                 "Particle Instance Modifier");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        ParticleInstanceModifierData *pimd = (ParticleInstanceModifierData *) md;
        if (pimd->ob != NULL) {
-               DEG_add_object_relation(node, pimd->ob, DEG_OB_COMP_TRANSFORM, "Particle Instance Modifier");
+               DEG_add_object_relation(ctx->node, pimd->ob, DEG_OB_COMP_TRANSFORM, "Particle Instance Modifier");
        }
 }
 
index 7896ea0a948dd050962975b9551127f1c2b91bc2..047b1d5c47d0aacebaddf25a91896ca2c7ec49c8 100644 (file)
@@ -1119,32 +1119,24 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
 }
 
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        ScrewModifierData *ltmd = (ScrewModifierData *) md;
 
        if (ltmd->ob_axis) {
-               DagNode *curNode = dag_get_node(forest, ltmd->ob_axis);
+               DagNode *curNode = dag_get_node(ctx->forest, ltmd->ob_axis);
 
-               dag_add_relation(forest, curNode, obNode,
+               dag_add_relation(ctx->forest, curNode, ctx->obNode,
                                 DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
                                 "Screw Modifier");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        ScrewModifierData *ltmd = (ScrewModifierData *)md;
        if (ltmd->ob_axis != NULL) {
-               DEG_add_object_relation(node, ltmd->ob_axis, DEG_OB_COMP_TRANSFORM, "Screw Modifier");
+               DEG_add_object_relation(ctx->node, ltmd->ob_axis, DEG_OB_COMP_TRANSFORM, "Screw Modifier");
        }
 }
 
index a14747bc153b77ae5665739343fa1ba2a64aa4c5..e0f48ae5a2f5d9531fa4f023db1af7f75a670069 100644 (file)
@@ -143,37 +143,29 @@ static void deformVertsEM(ModifierData *md, Object *ob, struct BMEditMesh *editD
                dm->release(dm);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *) md;
 
        if (smd->target)
-               dag_add_relation(forest, dag_get_node(forest, smd->target), obNode,
+               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(forest, dag_get_node(forest, smd->auxTarget), obNode,
+               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,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *)md;
        if (smd->target != NULL) {
-               DEG_add_object_relation(node, smd->target, DEG_OB_COMP_TRANSFORM, "Shrinkwrap Modifier");
-               DEG_add_object_relation(node, smd->target, DEG_OB_COMP_GEOMETRY, "Shrinkwrap Modifier");
+               DEG_add_object_relation(ctx->node, smd->target, DEG_OB_COMP_TRANSFORM, "Shrinkwrap Modifier");
+               DEG_add_object_relation(ctx->node, smd->target, DEG_OB_COMP_GEOMETRY, "Shrinkwrap Modifier");
        }
        if (smd->auxTarget != NULL) {
-               DEG_add_object_relation(node, smd->auxTarget, DEG_OB_COMP_TRANSFORM, "Shrinkwrap Modifier");
-               DEG_add_object_relation(node, smd->auxTarget, DEG_OB_COMP_GEOMETRY, "Shrinkwrap Modifier");
+               DEG_add_object_relation(ctx->node, smd->auxTarget, DEG_OB_COMP_TRANSFORM, "Shrinkwrap Modifier");
+               DEG_add_object_relation(ctx->node, smd->auxTarget, DEG_OB_COMP_GEOMETRY, "Shrinkwrap Modifier");
        }
 }
 
index 00c1fc90d277d3a6894e56581ed5dba305b3c511..71109922f114ac28d8baa758ed3fce7d28060b7a 100644 (file)
@@ -378,27 +378,19 @@ static void foreachObjectLink(
        walk(userData, ob, &smd->origin, IDWALK_CB_NOP);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        SimpleDeformModifierData *smd  = (SimpleDeformModifierData *)md;
 
        if (smd->origin)
-               dag_add_relation(forest, dag_get_node(forest, smd->origin), obNode, DAG_RL_OB_DATA, "SimpleDeform Modifier");
+               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,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        SimpleDeformModifierData *smd  = (SimpleDeformModifierData *)md;
        if (smd->origin != NULL) {
-               DEG_add_object_relation(node, smd->origin, DEG_OB_COMP_TRANSFORM, "SimpleDeform Modifier");
+               DEG_add_object_relation(ctx->node, smd->origin, DEG_OB_COMP_TRANSFORM, "SimpleDeform Modifier");
        }
 }
 
index ab4952a3aa9b57282a78de1e91e4be4ba1cf3a68..2073e23b7b265738fc4c06760f6581794b9c8d75 100644 (file)
@@ -130,42 +130,32 @@ static bool is_coll_cb(Object *UNUSED(ob), ModifierData *md)
        return (smd->type & MOD_SMOKE_TYPE_COLL) && smd->coll;
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *scene, struct Object *ob,
-                           DagNode *obNode)
+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(forest, scene, ob, obNode, smd->domain->fluid_group, ob->lay|scene->lay, eModifierType_Smoke, is_flow_cb, true, "Smoke Flow");
-               dag_add_collision_relations(forest, scene, ob, obNode, smd->domain->coll_group, ob->lay|scene->lay, eModifierType_Smoke, is_coll_cb, true, "Smoke Coll");
-               dag_add_forcefield_relations(forest, scene, ob, obNode, smd->domain->effector_weights, true, PFIELD_SMOKEFLOW, "Smoke Force Field");
+               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)forest;
-       (void)scene;
-       (void)ob;
-       (void)obNode;
+       (void)ctx;
 #endif
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *scene,
-                            Object *ob,
-                            struct DepsNodeHandle *node)
+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, ob->lay|scene->lay, eModifierType_Smoke, is_flow_cb, true, "Smoke Flow");
-               DEG_add_collision_relations(node, scene, ob, smd->domain->coll_group, ob->lay|scene->lay, 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_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 8b33f1974907739efb12417538fc5e81060c54fe..e760ff5ca01999955315aa2e6d3cb1bd718aa1de 100644 (file)
@@ -62,36 +62,27 @@ static bool dependsOnTime(ModifierData *UNUSED(md))
        return true;
 }
 
-static void updateDepgraph(ModifierData *UNUSED(md), DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           Scene *scene, Object *ob, DagNode *obNode)
+static void updateDepgraph(ModifierData *UNUSED(md), const ModifierUpdateDepsgraphContext *ctx)
 {
-       if (ob->soft) {
+       if (ctx->object->soft) {
 #ifdef WITH_LEGACY_DEPSGRAPH
                /* Actual code uses ccd_build_deflector_hash */
-               dag_add_collision_relations(forest, scene, ob, obNode, ob->soft->collision_group, ob->lay, eModifierType_Collision, NULL, false, "Softbody Collision");
+               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(forest, scene, ob, obNode, ob->soft->effector_weights, true, 0, "Softbody Field");
+               dag_add_forcefield_relations(ctx->forest, ctx->scene, ctx->object, ctx->obNode, ctx->object->soft->effector_weights, true, 0, "Softbody Field");
 #else
-       (void)forest;
-       (void)scene;
-       (void)ob;
-       (void)obNode;
+       (void)ctx;
 #endif
        }
 }
 
-static void updateDepsgraph(ModifierData *UNUSED(md),
-                            struct Main *UNUSED(bmain),
-                            struct Scene *scene,
-                            Object *ob,
-                            struct DepsNodeHandle *node)
+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, ob->lay, 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_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 14128b258b9b15c982eda794c7b5c89f23f24e36..fc605dd48e12f3e62d1db24d09f646aea94b23ed 100644 (file)
@@ -170,30 +170,22 @@ static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk,
        walk(userData, ob, &smd->target, IDWALK_NOP);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
 
        if (smd->target) {
-               DagNode *curNode = dag_get_node(forest, smd->target);
+               DagNode *curNode = dag_get_node(ctx->forest, smd->target);
 
-               dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA, "Surface Deform Modifier");
+               dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_DATA_DATA, "Surface Deform Modifier");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
        if (smd->target != NULL) {
-               DEG_add_object_relation(node, smd->target, DEG_OB_COMP_GEOMETRY, "Surface Deform Modifier");
+               DEG_add_object_relation(ctx->node, smd->target, DEG_OB_COMP_GEOMETRY, "Surface Deform Modifier");
        }
 }
 
index 89ce50d076a8682b5f5807cae371fbebf92fd9e1..1cefb07b50acc10d4e6d2a629e0c2249bea50dbf 100644 (file)
@@ -109,36 +109,28 @@ static void foreachIDLink(ModifierData *md, Object *ob,
        foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+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(forest, umd->projectors[i]);
+                       DagNode *curNode = dag_get_node(ctx->forest, umd->projectors[i]);
 
-                       dag_add_relation(forest, curNode, obNode,
+                       dag_add_relation(ctx->forest, curNode, ctx->obNode,
                                         DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "UV Project Modifier");
                }
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        UVProjectModifierData *umd = (UVProjectModifierData *)md;
        int i;
        for (i = 0; i < umd->num_projectors; ++i) {
                if (umd->projectors[i] != NULL) {
-                       DEG_add_object_relation(node, umd->projectors[i], DEG_OB_COMP_TRANSFORM, "UV Project Modifier");
+                       DEG_add_object_relation(ctx->node, umd->projectors[i], DEG_OB_COMP_TRANSFORM, "UV Project Modifier");
                }
        }
 }
index b263f792741655ab1c74147f7a29b4849fac5a9c..384efc746660f042da71cb1b3d7af9b12364e994 100644 (file)
@@ -235,7 +235,7 @@ static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk,
 }
 
 static void uv_warp_deps_object_bone(DagForest *forest, DagNode *obNode,
-                                Object *obj, const char *bonename)
+                                     Object *obj, const char *bonename)
 {
        if (obj) {
                DagNode *curNode = dag_get_node(forest, obj);
@@ -247,16 +247,12 @@ static void uv_warp_deps_object_bone(DagForest *forest, DagNode *obNode,
        }
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        UVWarpModifierData *umd = (UVWarpModifierData *) md;
 
-       uv_warp_deps_object_bone(forest, obNode, umd->object_src, umd->bone_src);
-       uv_warp_deps_object_bone(forest, obNode, umd->object_dst, umd->bone_dst);
+       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,
@@ -271,16 +267,12 @@ static void uv_warp_deps_object_bone_new(struct DepsNodeHandle *node,
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        UVWarpModifierData *umd = (UVWarpModifierData *) md;
 
-       uv_warp_deps_object_bone_new(node, umd->object_src, umd->bone_src);
-       uv_warp_deps_object_bone_new(node, umd->object_dst, umd->bone_dst);
+       uv_warp_deps_object_bone_new(ctx->node, umd->object_src, umd->bone_src);
+       uv_warp_deps_object_bone_new(ctx->node, umd->object_dst, umd->bone_dst);
 }
 
 ModifierTypeInfo modifierType_UVWarp = {
index 62813d7579342bb7824e4a9f77f8bf1816770301..00d7906a442dbf766e7f36b92dabff878b126c01 100644 (file)
@@ -139,40 +139,33 @@ static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void
        walk(userData, ob, md, "texture");
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob), DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        WarpModifierData *wmd = (WarpModifierData *) md;
 
        if (wmd->object_from && wmd->object_to) {
-               DagNode *fromNode = dag_get_node(forest, wmd->object_from);
-               DagNode *toNode = dag_get_node(forest, 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(forest, fromNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Warp Modifier1");
-               dag_add_relation(forest, toNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Warp Modifier2");
+               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(forest, wmd->map_object);
-               dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Warp Modifier3");
+               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,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        WarpModifierData *wmd = (WarpModifierData *) md;
        if (wmd->object_from != NULL && wmd->object_to != NULL) {
-               DEG_add_object_relation(node, wmd->object_from, DEG_OB_COMP_TRANSFORM, "Warp Modifier from");
-               DEG_add_object_relation(node, wmd->object_to, DEG_OB_COMP_TRANSFORM, "Warp Modifier to");
+               DEG_add_object_relation(ctx->node, wmd->object_from, DEG_OB_COMP_TRANSFORM, "Warp Modifier from");
+               DEG_add_object_relation(ctx->node, wmd->object_to, DEG_OB_COMP_TRANSFORM, "Warp Modifier to");
        }
        if ((wmd->texmapping == MOD_DISP_MAP_OBJECT) && wmd->map_object != NULL) {
-               DEG_add_object_relation(node, wmd->map_object, DEG_OB_COMP_TRANSFORM, "Warp Modifier map");
+               DEG_add_object_relation(ctx->node, wmd->map_object, DEG_OB_COMP_TRANSFORM, "Warp Modifier map");
        }
 }
 
index 9e351d1e41139f8dc208a0e1fb91ec7a93569980..0c3781acb19993e8a8e81a1586f1de5b12a10108 100644 (file)
@@ -127,41 +127,33 @@ static void foreachTexLink(ModifierData *md, Object *ob,
        walk(userData, ob, md, "texture");
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           Scene *UNUSED(scene),
-                           Object *UNUSED(ob),
-                           DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        WaveModifierData *wmd = (WaveModifierData *) md;
 
        if (wmd->objectcenter) {
-               DagNode *curNode = dag_get_node(forest, wmd->objectcenter);
+               DagNode *curNode = dag_get_node(ctx->forest, wmd->objectcenter);
 
-               dag_add_relation(forest, curNode, obNode, DAG_RL_OB_DATA,
+               dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_OB_DATA,
                                 "Wave Modifier");
        }
 
        if (wmd->map_object) {
-               DagNode *curNode = dag_get_node(forest, wmd->map_object);
+               DagNode *curNode = dag_get_node(ctx->forest, wmd->map_object);
 
-               dag_add_relation(forest, curNode, obNode, DAG_RL_OB_DATA,
+               dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_OB_DATA,
                                 "Wave Modifer");
        }
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *UNUSED(ob),
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        WaveModifierData *wmd = (WaveModifierData *)md;
        if (wmd->objectcenter != NULL) {
-               DEG_add_object_relation(node, wmd->objectcenter, DEG_OB_COMP_TRANSFORM, "Wave Modifier");
+               DEG_add_object_relation(ctx->node, wmd->objectcenter, DEG_OB_COMP_TRANSFORM, "Wave Modifier");
        }
        if (wmd->map_object != NULL) {
-               DEG_add_object_relation(node, wmd->map_object, DEG_OB_COMP_TRANSFORM, "Wave Modifier");
+               DEG_add_object_relation(ctx->node, wmd->map_object, DEG_OB_COMP_TRANSFORM, "Wave Modifier");
        }
 }
 
index a5f40a5e8cfe34d93e42adcaec7ddac632b31b17..aeb3df4262209ec88a9170a59e79aa5d7c017aab 100644 (file)
@@ -141,38 +141,31 @@ static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void
        walk(userData, ob, md, "mask_texture");
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob), DagNode *obNode)
+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(forest, wmd->mask_tex_map_obj);
+               curNode = dag_get_node(ctx->forest, wmd->mask_tex_map_obj);
 
-               dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
+               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(forest, obNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
+               dag_add_relation(ctx->forest, ctx->obNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
                                 "WeightVGEdit Modifier");
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *ob,
-                            struct DepsNodeHandle *node)
+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) {
-               DEG_add_object_relation(node, wmd->mask_tex_map_obj, DEG_OB_COMP_TRANSFORM, "WeightVGEdit Modifier");
+               DEG_add_object_relation(ctx->node, wmd->mask_tex_map_obj, DEG_OB_COMP_TRANSFORM, "WeightVGEdit Modifier");
        }
        if (wmd->mask_tex_mapping == MOD_DISP_MAP_GLOBAL) {
-               DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "WeightVGEdit Modifier");
+               DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "WeightVGEdit Modifier");
        }
 }
 
index b3a687474f404742cad459ea797dc737aa5e2ef8..032e154e0968e38230f46c02ed488e143709f854 100644 (file)
@@ -190,40 +190,33 @@ static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void
        walk(userData, ob, md, "mask_texture");
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob), DagNode *obNode)
+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(forest, wmd->mask_tex_map_obj);
+               curNode = dag_get_node(ctx->forest, wmd->mask_tex_map_obj);
 
-               dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
+               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(forest, obNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
+               dag_add_relation(ctx->forest, ctx->obNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
                                 "WeightVGMix Modifier");
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *ob,
-                            struct DepsNodeHandle *node)
+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) {
-               DEG_add_object_relation(node, wmd->mask_tex_map_obj, DEG_OB_COMP_TRANSFORM, "WeightVGMix Modifier");
-               DEG_add_object_relation(node, wmd->mask_tex_map_obj, DEG_OB_COMP_GEOMETRY, "WeightVGMix Modifier");
+               DEG_add_object_relation(ctx->node, wmd->mask_tex_map_obj, DEG_OB_COMP_TRANSFORM, "WeightVGMix Modifier");
+               DEG_add_object_relation(ctx->node, wmd->mask_tex_map_obj, DEG_OB_COMP_GEOMETRY, "WeightVGMix Modifier");
        }
        if (wmd->mask_tex_mapping == MOD_DISP_MAP_GLOBAL) {
-               DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "WeightVGMix Modifier");
-               DEG_add_object_relation(node, ob, DEG_OB_COMP_GEOMETRY, "WeightVGMix Modifier");
+               DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "WeightVGMix Modifier");
+               DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_GEOMETRY, "WeightVGMix Modifier");
        }
 }
 
index 3904532a9bac7d4b906e967eab33a8a7efd485cb..cbc62cdace5896380eb76d7ccf016c02253a1378 100644 (file)
@@ -351,50 +351,43 @@ static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void
        walk(userData, ob, md, "mask_texture");
 }
 
-static void updateDepgraph(ModifierData *md, DagForest *forest,
-                           struct Main *UNUSED(bmain),
-                           struct Scene *UNUSED(scene),
-                           Object *UNUSED(ob), DagNode *obNode)
+static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData *) md;
        DagNode *curNode;
 
        if (wmd->proximity_ob_target) {
-               curNode = dag_get_node(forest, wmd->proximity_ob_target);
-               dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
+               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(forest, wmd->mask_tex_map_obj);
+               curNode = dag_get_node(ctx->forest, wmd->mask_tex_map_obj);
 
-               dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
+               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(forest, obNode, obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
+               dag_add_relation(ctx->forest, ctx->obNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA,
                                 "WeightVGProximity Modifier");
 }
 
-static void updateDepsgraph(ModifierData *md,
-                            struct Main *UNUSED(bmain),
-                            struct Scene *UNUSED(scene),
-                            Object *ob,
-                            struct DepsNodeHandle *node)
+static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 {
        WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData *)md;
        if (wmd->proximity_ob_target != NULL) {
-               DEG_add_object_relation(node, wmd->proximity_ob_target, DEG_OB_COMP_TRANSFORM, "WeightVGProximity Modifier");
-               DEG_add_object_relation(node, wmd->proximity_ob_target, DEG_OB_COMP_GEOMETRY, "WeightVGProximity Modifier");
+               DEG_add_object_relation(ctx->node, wmd->proximity_ob_target, DEG_OB_COMP_TRANSFORM, "WeightVGProximity Modifier");
+               DEG_add_object_relation(ctx->node, wmd->proximity_ob_target, DEG_OB_COMP_GEOMETRY, "WeightVGProximity Modifier");
        }
        if (wmd->mask_tex_map_obj != NULL && wmd->mask_tex_mapping == MOD_DISP_MAP_OBJECT) {
-               DEG_add_object_relation(node, wmd->mask_tex_map_obj, DEG_OB_COMP_TRANSFORM, "WeightVGProximity Modifier");
-               DEG_add_object_relation(node, wmd->mask_tex_map_obj, DEG_OB_COMP_GEOMETRY, "WeightVGProximity Modifier");
+               DEG_add_object_relation(ctx->node, wmd->mask_tex_map_obj, DEG_OB_COMP_TRANSFORM, "WeightVGProximity Modifier");
+               DEG_add_object_relation(ctx->node, wmd->mask_tex_map_obj, DEG_OB_COMP_GEOMETRY, "WeightVGProximity Modifier");
        }
        if (wmd->mask_tex_mapping == MOD_DISP_MAP_GLOBAL) {
-               DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "WeightVGProximity Modifier");
-               DEG_add_object_relation(node, ob, DEG_OB_COMP_GEOMETRY, "WeightVGProximity Modifier");
+               DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "WeightVGProximity Modifier");
+               DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_GEOMETRY, "WeightVGProximity Modifier");
        }
 }