forked from bartvdbraak/blender
Smoke bugfix: Fix copy paste + bad "if's" resulting in missing releation in depsgraph (smoke collision groups not working, collision object relations wrong).
This commit is contained in:
parent
e89642ef99
commit
8186c5e429
@ -110,20 +110,34 @@ static void updateDepgraph(ModifierData *md, DagForest *forest,
|
||||
SmokeModifierData *smd = (SmokeModifierData *) md;
|
||||
|
||||
if (smd && (smd->type & MOD_SMOKE_TYPE_DOMAIN) && smd->domain) {
|
||||
if (smd->domain->fluid_group) {
|
||||
if (smd->domain->fluid_group || smd->domain->coll_group) {
|
||||
GroupObject *go = NULL;
|
||||
|
||||
if(smd->domain->fluid_group)
|
||||
for (go = smd->domain->fluid_group->gobject.first; go; go = go->next) {
|
||||
if (go->ob) {
|
||||
SmokeModifierData *smd2 = (SmokeModifierData *)modifiers_findByType(go->ob, eModifierType_Smoke);
|
||||
|
||||
// check for initialized smoke object
|
||||
if (smd2 && (((smd2->type & MOD_SMOKE_TYPE_FLOW) && smd2->flow) || ((smd->type & MOD_SMOKE_TYPE_COLL) && smd2->coll))) {
|
||||
if (smd2 && (smd2->type & MOD_SMOKE_TYPE_FLOW) && smd2->flow) {
|
||||
DagNode *curNode = dag_get_node(forest, go->ob);
|
||||
dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Smoke Flow");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(smd->domain->coll_group)
|
||||
for (go = smd->domain->coll_group->gobject.first; go; go = go->next) {
|
||||
if (go->ob) {
|
||||
SmokeModifierData *smd2 = (SmokeModifierData *)modifiers_findByType(go->ob, eModifierType_Smoke);
|
||||
|
||||
// check for initialized smoke object
|
||||
if (smd2 && (smd2->type & MOD_SMOKE_TYPE_COLL) && smd2->coll) {
|
||||
DagNode *curNode = dag_get_node(forest, go->ob);
|
||||
dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Smoke Coll");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
Base *base = scene->base.first;
|
||||
@ -131,9 +145,9 @@ static void updateDepgraph(ModifierData *md, DagForest *forest,
|
||||
for ( ; base; base = base->next) {
|
||||
SmokeModifierData *smd2 = (SmokeModifierData *)modifiers_findByType(base->object, eModifierType_Smoke);
|
||||
|
||||
if (smd2 && (((smd2->type & MOD_SMOKE_TYPE_FLOW) && smd2->flow) || ((smd->type & MOD_SMOKE_TYPE_COLL) && smd2->coll))) {
|
||||
if (smd2 && (((smd2->type & MOD_SMOKE_TYPE_FLOW) && smd2->flow) || ((smd2->type & MOD_SMOKE_TYPE_COLL) && smd2->coll))) {
|
||||
DagNode *curNode = dag_get_node(forest, base->object);
|
||||
dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Smoke Flow");
|
||||
dag_add_relation(forest, curNode, obNode, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Smoke Flow/Coll");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user