Depsgraph: Build all type of IDs for modifiers and constraints

It was missing handling of collections there, which caused collection
used for smoke colliders to not be in the dependency graph.
This commit is contained in:
Sergey Sharybin 2018-11-15 12:47:58 +01:00
parent c3e2b40a91
commit 9a9ca5e40b
2 changed files with 17 additions and 23 deletions

View File

@ -412,6 +412,9 @@ void DepsgraphNodeBuilder::build_id(ID *id)
return;
}
switch (GS(id->name)) {
case ID_AC:
build_action((bAction *)id);
break;
case ID_AR:
build_armature((bArmature *)id);
break;
@ -1663,17 +1666,15 @@ void DepsgraphNodeBuilder::modifier_walk(void *user_data,
}
switch (GS(id->name)) {
case ID_OB:
/* TODO(sergey): Use visibility of owner of modifier stack. */
/* Special case for object, so we take owner visibility into
* account. */
data->builder->build_object(-1,
(Object *)id,
DEG_ID_LINKED_INDIRECTLY,
data->is_parent_visible);
break;
case ID_TE:
data->builder->build_texture((Tex *)id);
break;
default:
/* pass */
data->builder->build_id(id);
break;
}
}
@ -1690,14 +1691,15 @@ void DepsgraphNodeBuilder::constraint_walk(bConstraint * /*con*/,
}
switch (GS(id->name)) {
case ID_OB:
/* TODO(sergey): Use visibility of owner of modifier stack. */
/* Special case for object, so we take owner visibility into
* account. */
data->builder->build_object(-1,
(Object *)id,
DEG_ID_LINKED_INDIRECTLY,
data->is_parent_visible);
break;
default:
/* pass */
data->builder->build_id(id);
break;
}
}

View File

@ -427,6 +427,9 @@ void DepsgraphRelationBuilder::build_id(ID *id)
return;
}
switch (GS(id->name)) {
case ID_AC:
build_action((bAction *)id);
break;
case ID_AR:
build_armature((bArmature *)id);
break;
@ -2510,17 +2513,7 @@ void DepsgraphRelationBuilder::modifier_walk(void *user_data,
if (id == NULL) {
return;
}
switch (GS(id->name)) {
case ID_OB:
data->builder->build_object(NULL, (Object *)id);
break;
case ID_TE:
data->builder->build_texture((Tex *)id);
break;
default:
/* pass */
break;
}
data->builder->build_id(id);
}
void DepsgraphRelationBuilder::constraint_walk(bConstraint * /*con*/,
@ -2529,12 +2522,11 @@ void DepsgraphRelationBuilder::constraint_walk(bConstraint * /*con*/,
void *user_data)
{
BuilderWalkUserData *data = (BuilderWalkUserData *)user_data;
if (*idpoin) {
ID *id = *idpoin;
if (GS(id->name) == ID_OB) {
data->builder->build_object(NULL, (Object *)id);
}
ID *id = *idpoin;
if (id == NULL) {
return;
}
data->builder->build_id(id);
}
} // namespace DEG