[Bf-blender-cvs] [527674b] master: Depsgraph: Accumulate object layers from all bases

Sergey Sharybin noreply at git.blender.org
Wed Jul 13 10:07:13 CEST 2016


Commit: 527674b316b8a2736deb3ef7f64aa2861b03da87
Author: Sergey Sharybin
Date:   Wed Jul 13 10:07:09 2016 +0200
Branches: master
https://developer.blender.org/rB527674b316b8a2736deb3ef7f64aa2861b03da87

Depsgraph: Accumulate object layers from all bases

This solves bug when same object is instanced from multiple bases.

===================================================================

M	source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
M	source/blender/depsgraph/intern/nodes/deg_node.cc

===================================================================

diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index 2d67ef1..e036878 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -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 */
diff --git a/source/blender/depsgraph/intern/nodes/deg_node.cc b/source/blender/depsgraph/intern/nodes/deg_node.cc
index 12d5ee0..db807d2 100644
--- a/source/blender/depsgraph/intern/nodes/deg_node.cc
+++ b/source/blender/depsgraph/intern/nodes/deg_node.cc
@@ -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");




More information about the Bf-blender-cvs mailing list