Depsgraph: Accumulate object layers from all bases

This solves bug when same object is instanced from multiple bases.
This commit is contained in:
Sergey Sharybin 2016-07-13 10:07:09 +02:00
parent 8939787bfb
commit 527674b316
2 changed files with 7 additions and 2 deletions

@ -397,12 +397,12 @@ void DepsgraphNodeBuilder::build_object(Scene *scene, Base *base, Object *ob)
{
if (ob->id.tag & LIB_TAG_DOIT) {
IDDepsNode *id_node = m_graph->find_id_node(&ob->id);
id_node->layers = base->lay;
id_node->layers |= base->lay;
return;
}
IDDepsNode *id_node = add_id_node(&ob->id);
id_node->layers = base->lay;
id_node->layers |= base->lay;
ob->customdata_mask = 0;
/* standard components */

@ -181,6 +181,11 @@ void IDDepsNode::init(const ID *id, const string &UNUSED(subdata))
this->layers = (1 << 20) - 1;
this->eval_flags = 0;
/* For object we initialize layers to layer from base. */
if (GS(id) == ID_OB) {
this->layers = 0;
}
components = BLI_ghash_new(id_deps_node_hash_key,
id_deps_node_hash_key_cmp,
"Depsgraph id components hash");