[Bf-blender-cvs] [95f257395e0] blender2.8: Depsgraph: Make indirectly linked objects inherit visibility from parent
Sergey Sharybin
noreply at git.blender.org
Fri Sep 14 14:44:59 CEST 2018
Commit: 95f257395e0f0322ce539671dee1370e5b081cd4
Author: Sergey Sharybin
Date: Fri Sep 14 12:26:49 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB95f257395e0f0322ce539671dee1370e5b081cd4
Depsgraph: Make indirectly linked objects inherit visibility from parent
This way objects which are pulled into dependency graph via modifier
stack from an invisible object will be invisible.
===================================================================
M source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
M source/blender/depsgraph/intern/builder/deg_builder_nodes.h
M source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
===================================================================
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index d39371db299..a8dbe1325c8 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -540,24 +540,28 @@ void DepsgraphNodeBuilder::build_object(int base_index,
if (object->modifiers.first != NULL) {
BuilderWalkUserData data;
data.builder = this;
+ data.is_parent_visible = is_visible;
modifiers_foreachIDLink(object, modifier_walk, &data);
}
/* Grease Pencil Modifiers. */
if (object->greasepencil_modifiers.first != NULL) {
BuilderWalkUserData data;
data.builder = this;
+ data.is_parent_visible = is_visible;
BKE_gpencil_modifiers_foreachIDLink(object, modifier_walk, &data);
}
- /* Shadr FX. */
+ /* Shader FX. */
if (object->shader_fx.first != NULL) {
BuilderWalkUserData data;
data.builder = this;
+ data.is_parent_visible = is_visible;
BKE_shaderfx_foreachIDLink(object, modifier_walk, &data);
}
/* Constraints. */
if (object->constraints.first != NULL) {
BuilderWalkUserData data;
data.builder = this;
+ data.is_parent_visible = is_visible;
BKE_constraints_id_loop(&object->constraints, constraint_walk, &data);
}
/* Object data. */
@@ -1599,7 +1603,7 @@ void DepsgraphNodeBuilder::modifier_walk(void *user_data,
data->builder->build_object(-1,
(Object *)id,
DEG_ID_LINKED_INDIRECTLY,
- true);
+ data->is_parent_visible);
break;
case ID_TE:
data->builder->build_texture((Tex *)id);
@@ -1626,7 +1630,7 @@ void DepsgraphNodeBuilder::constraint_walk(bConstraint * /*con*/,
data->builder->build_object(-1,
(Object *)id,
DEG_ID_LINKED_INDIRECTLY,
- true);
+ data->is_parent_visible);
break;
default:
/* pass */
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
index 5c9ddde8c5a..35e81de8304 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
@@ -241,6 +241,8 @@ protected:
struct BuilderWalkUserData {
DepsgraphNodeBuilder *builder;
+ /* Denotes whether object the walk is invoked from is visible. */
+ bool is_parent_visible;
};
static void modifier_walk(void *user_data,
struct Object *object,
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
index 2853c96ef9d..71810e5efe8 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
@@ -74,6 +74,8 @@ void DepsgraphNodeBuilder::build_pose_constraints(Object *object,
/* Pull indirect dependencies via constraints. */
BuilderWalkUserData data;
data.builder = this;
+ /* TODO(sergey): Use own visibility. */
+ data.is_parent_visible = true;
BKE_constraints_id_loop(&pchan->constraints, constraint_walk, &data);
/* Create node for constraint stack. */
add_operation_node(&object->id, DEG_NODE_TYPE_BONE, pchan->name,
More information about the Bf-blender-cvs
mailing list