diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-02-22 14:54:06 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-02-22 14:54:06 +0300 |
commit | df045206021bdd448482f9d022f73029d28f7fc3 (patch) | |
tree | b2246d23a94c05967811a67a366671254736864b /source/blender/blenkernel | |
parent | 93072e44d11efe9528d2bb7a3a62784331bf0a08 (diff) |
Depsgraph: Wrap all arguments foe modifiers relations update into a struct
Makes it easier to add or remove fields needed to update relations.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_modifier.h | 23 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/depsgraph.c | 11 |
2 files changed, 25 insertions, 9 deletions
diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h index 30c47a4b192..c4dc4998e35 100644 --- a/source/blender/blenkernel/BKE_modifier.h +++ b/source/blender/blenkernel/BKE_modifier.h @@ -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. diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 0fb9c4408d6..99e4a3ab9da 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -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) { |