Pass proper bmain to the updateDepgraph() of modifiers

This is mainly to make physics modifiers being able to work
with it. For other cases this main is not needed.
This commit is contained in:
Sergey Sharybin 2015-03-13 11:48:04 +05:00
parent 1cac8c23b5
commit aa4cb95a5c
30 changed files with 58 additions and 21 deletions

@ -41,6 +41,7 @@ struct Scene;
struct ListBase; struct ListBase;
struct LinkNode; struct LinkNode;
struct bArmature; struct bArmature;
struct Main;
struct ModifierData; struct ModifierData;
struct BMEditMesh; struct BMEditMesh;
@ -256,7 +257,8 @@ typedef struct ModifierTypeInfo {
* *
* This function is optional. * This function is optional.
*/ */
void (*updateDepgraph)(struct ModifierData *md, struct DagForest *forest, struct Scene *scene, void (*updateDepgraph)(struct ModifierData *md, struct DagForest *forest,
struct Main *bmain, struct Scene *scene,
struct Object *ob, struct DagNode *obNode); struct Object *ob, struct DagNode *obNode);
/* Should return true if the modifier needs to be recalculated on time /* Should return true if the modifier needs to be recalculated on time

@ -484,7 +484,7 @@ static void dag_add_collision_field_relation(DagForest *dag, Scene *scene, Objec
} }
} }
static void build_dag_object(DagForest *dag, DagNode *scenenode, Scene *scene, Object *ob, int mask) static void build_dag_object(DagForest *dag, DagNode *scenenode, Main *bmain, Scene *scene, Object *ob, int mask)
{ {
bConstraint *con; bConstraint *con;
DagNode *node; DagNode *node;
@ -576,7 +576,7 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Scene *scene, O
for (md = ob->modifiers.first; md; md = md->next) { for (md = ob->modifiers.first; md; md = md->next) {
ModifierTypeInfo *mti = modifierType_getInfo(md->type); ModifierTypeInfo *mti = modifierType_getInfo(md->type);
if (mti->updateDepgraph) mti->updateDepgraph(md, dag, scene, ob, node); if (mti->updateDepgraph) mti->updateDepgraph(md, dag, bmain, scene, ob, node);
} }
} }
if (ob->parent) { if (ob->parent) {
@ -891,7 +891,7 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Scene *scene, O
dag_add_relation(dag, scenenode, node, DAG_RL_SCENE, "Scene Relation"); dag_add_relation(dag, scenenode, node, DAG_RL_SCENE, "Scene Relation");
} }
static void build_dag_group(DagForest *dag, DagNode *scenenode, Scene *scene, Group *group, short mask) static void build_dag_group(DagForest *dag, DagNode *scenenode, Main *bmain, Scene *scene, Group *group, short mask)
{ {
GroupObject *go; GroupObject *go;
@ -901,9 +901,9 @@ static void build_dag_group(DagForest *dag, DagNode *scenenode, Scene *scene, Gr
group->id.flag |= LIB_DOIT; group->id.flag |= LIB_DOIT;
for (go = group->gobject.first; go; go = go->next) { for (go = group->gobject.first; go; go = go->next) {
build_dag_object(dag, scenenode, scene, go->ob, mask); build_dag_object(dag, scenenode, bmain, scene, go->ob, mask);
if (go->ob->dup_group) if (go->ob->dup_group)
build_dag_group(dag, scenenode, scene, go->ob->dup_group, mask); build_dag_group(dag, scenenode, bmain, scene, go->ob->dup_group, mask);
} }
} }
@ -936,11 +936,11 @@ DagForest *build_dag(Main *bmain, Scene *sce, short mask)
for (base = sce->base.first; base; base = base->next) { for (base = sce->base.first; base; base = base->next) {
ob = base->object; ob = base->object;
build_dag_object(dag, scenenode, sce, ob, mask); build_dag_object(dag, scenenode, bmain, sce, ob, mask);
if (ob->proxy) if (ob->proxy)
build_dag_object(dag, scenenode, sce, ob->proxy, mask); build_dag_object(dag, scenenode, bmain, sce, ob->proxy, mask);
if (ob->dup_group) if (ob->dup_group)
build_dag_group(dag, scenenode, sce, ob->dup_group, mask); build_dag_group(dag, scenenode, bmain, sce, ob->dup_group, mask);
} }
BKE_main_id_tag_idcode(bmain, ID_GR, false); BKE_main_id_tag_idcode(bmain, ID_GR, false);

@ -100,6 +100,7 @@ static void foreachObjectLink(
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -102,7 +102,9 @@ static void foreachObjectLink(
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Scene *UNUSED(scene), Object *UNUSED(ob), DagNode *obNode) struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene),
Object *UNUSED(ob), DagNode *obNode)
{ {
ArrayModifierData *amd = (ArrayModifierData *) md; ArrayModifierData *amd = (ArrayModifierData *) md;

@ -74,6 +74,7 @@ static void foreachObjectLink(
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -106,6 +106,7 @@ static void foreachObjectLink(
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -118,7 +118,9 @@ static void deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData,
dm->release(dm); dm->release(dm);
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, Scene *scene, Object *ob, DagNode *obNode) static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
Scene *scene, Object *ob, DagNode *obNode)
{ {
ClothModifierData *clmd = (ClothModifierData *) md; ClothModifierData *clmd = (ClothModifierData *) md;

@ -92,6 +92,7 @@ static void foreachObjectLink(
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
Scene *UNUSED(scene), Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -131,7 +131,9 @@ static void foreachIDLink(ModifierData *md, Object *ob, IDWalkFunc walk, void *u
foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData); foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, struct Scene *UNUSED(scene), static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene),
Object *UNUSED(ob), DagNode *obNode) Object *UNUSED(ob), DagNode *obNode)
{ {
DataTransferModifierData *dtmd = (DataTransferModifierData *) md; DataTransferModifierData *dtmd = (DataTransferModifierData *) md;

@ -150,6 +150,7 @@ static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -112,6 +112,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *scene, struct Scene *scene,
Object *ob, Object *ob,
DagNode *obNode) DagNode *obNode)

@ -97,7 +97,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
} }
static void updateDepgraph( static void updateDepgraph(
ModifierData *md, DagForest *forest, Scene *scene, ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain), Scene *scene,
Object *ob, DagNode *obNode) Object *ob, DagNode *obNode)
{ {
FluidsimModifierData *fluidmd = (FluidsimModifierData *) md; FluidsimModifierData *fluidmd = (FluidsimModifierData *) md;

@ -112,6 +112,7 @@ static void foreachObjectLink(
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -92,6 +92,7 @@ static void foreachObjectLink(
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -77,6 +77,7 @@ static void foreachObjectLink(
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -123,6 +123,7 @@ static void foreachObjectLink(
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -73,6 +73,7 @@ static void foreachObjectLink(ModifierData *md, Object *ob,
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -465,7 +465,9 @@ static bool isDisabled(ModifierData *md, int UNUSED(useRenderParams))
return !is_valid_target(smd); return !is_valid_target(smd);
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, struct Scene *UNUSED(scene), static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene),
Object *UNUSED(ob), DagNode *obNode) Object *UNUSED(ob), DagNode *obNode)
{ {
NormalEditModifierData *smd = (NormalEditModifierData *) md; NormalEditModifierData *smd = (NormalEditModifierData *) md;

@ -111,6 +111,7 @@ static bool isDisabled(ModifierData *md, int useRenderParams)
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -1058,6 +1058,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -143,6 +143,7 @@ static void deformVertsEM(ModifierData *md, Object *ob, struct BMEditMesh *editD
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -287,6 +287,7 @@ static void foreachObjectLink(ModifierData *md, Object *ob,
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -47,7 +47,6 @@
#include "BKE_cdderivedmesh.h" #include "BKE_cdderivedmesh.h"
#include "BKE_global.h"
#include "BKE_library.h" #include "BKE_library.h"
#include "BKE_main.h" #include "BKE_main.h"
#include "BKE_modifier.h" #include "BKE_modifier.h"
@ -175,6 +174,7 @@ static void update_depsgraph_field_source_object(DagForest *forest,
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *bmain,
struct Scene *scene, struct Object *ob, struct Scene *scene, struct Object *ob,
DagNode *obNode) DagNode *obNode)
{ {
@ -212,7 +212,7 @@ static void updateDepgraph(ModifierData *md, DagForest *forest,
} }
} }
else { else {
BKE_main_id_tag_listbase(&G.main->object, true); BKE_main_id_tag_listbase(&bmain->object, true);
base = scene->base.first; base = scene->base.first;
for (; base; base = base->next) { for (; base; base = base->next) {
update_depsgraph_flow_coll_object(forest, obNode, base->object); update_depsgraph_flow_coll_object(forest, obNode, base->object);
@ -220,7 +220,7 @@ static void updateDepgraph(ModifierData *md, DagForest *forest,
} }
/* add relation to all "smoke flow" force fields */ /* add relation to all "smoke flow" force fields */
base = scene->base.first; base = scene->base.first;
BKE_main_id_tag_listbase(&G.main->object, true); BKE_main_id_tag_listbase(&bmain->object, true);
for (; base; base = base->next) { for (; base; base = base->next) {
update_depsgraph_field_source_object(forest, obNode, ob, base->object); update_depsgraph_field_source_object(forest, obNode, ob, base->object);
} }

@ -104,6 +104,7 @@ static void foreachIDLink(ModifierData *md, Object *ob,
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -218,6 +218,7 @@ static void uv_warp_deps_object_bone(DagForest *forest, DagNode *obNode,
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene), struct Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -136,7 +136,9 @@ static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void
walk(userData, ob, md, "texture"); walk(userData, ob, md, "texture");
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, struct Scene *UNUSED(scene), static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene),
Object *UNUSED(ob), DagNode *obNode) Object *UNUSED(ob), DagNode *obNode)
{ {
WarpModifierData *wmd = (WarpModifierData *) md; WarpModifierData *wmd = (WarpModifierData *) md;

@ -131,6 +131,7 @@ static void foreachTexLink(ModifierData *md, Object *ob,
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
Scene *UNUSED(scene), Scene *UNUSED(scene),
Object *UNUSED(ob), Object *UNUSED(ob),
DagNode *obNode) DagNode *obNode)

@ -142,7 +142,9 @@ static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void
walk(userData, ob, md, "mask_texture"); walk(userData, ob, md, "mask_texture");
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, struct Scene *UNUSED(scene), static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene),
Object *UNUSED(ob), DagNode *obNode) Object *UNUSED(ob), DagNode *obNode)
{ {
WeightVGEditModifierData *wmd = (WeightVGEditModifierData *) md; WeightVGEditModifierData *wmd = (WeightVGEditModifierData *) md;

@ -191,7 +191,9 @@ static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void
walk(userData, ob, md, "mask_texture"); walk(userData, ob, md, "mask_texture");
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, struct Scene *UNUSED(scene), static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene),
Object *UNUSED(ob), DagNode *obNode) Object *UNUSED(ob), DagNode *obNode)
{ {
WeightVGMixModifierData *wmd = (WeightVGMixModifierData *) md; WeightVGMixModifierData *wmd = (WeightVGMixModifierData *) md;

@ -312,7 +312,9 @@ static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void
walk(userData, ob, md, "mask_texture"); walk(userData, ob, md, "mask_texture");
} }
static void updateDepgraph(ModifierData *md, DagForest *forest, struct Scene *UNUSED(scene), static void updateDepgraph(ModifierData *md, DagForest *forest,
struct Main *UNUSED(bmain),
struct Scene *UNUSED(scene),
Object *UNUSED(ob), DagNode *obNode) Object *UNUSED(ob), DagNode *obNode)
{ {
WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData *) md; WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData *) md;