diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-09-19 16:46:03 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-09-19 17:10:12 +0300 |
commit | 749d5c033c62a0cb082f7c9dbbe3e742f043d83e (patch) | |
tree | de64cd91c36a592cd1ef67157c21b834436a0c87 /source/blender/depsgraph/intern/builder | |
parent | afb4da6650daeb8b8ac5fe9d3a6439c3433d7dc5 (diff) |
Depsgraph: Make visible update to operate on per-component level
Diffstat (limited to 'source/blender/depsgraph/intern/builder')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_nodes.cc | 11 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_nodes.h | 6 |
2 files changed, 11 insertions, 6 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc index da47465dd47..07b819a4d72 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc @@ -163,16 +163,18 @@ IDDepsNode *DepsgraphNodeBuilder::add_id_node(ID *id) { IDDepsNode *id_node = NULL; ID *id_cow = NULL; - bool is_previous_directly_visible = false; + IDComponentsMask previously_visible_components_mask = 0; IDInfo *id_info = (IDInfo *)BLI_ghash_lookup(id_info_hash_, id); if (id_info != NULL) { id_cow = id_info->id_cow; - is_previous_directly_visible = id_info->is_directly_visible; + previously_visible_components_mask = + id_info->previously_visible_components_mask; /* Tag ID info to not free the CoW ID pointer. */ id_info->id_cow = NULL; } id_node = graph_->add_id_node(id, id_cow); - id_node->is_previous_directly_visible = is_previous_directly_visible; + id_node->previously_visible_components_mask = + previously_visible_components_mask; /* Currently all ID nodes are supposed to have copy-on-write logic. * * NOTE: Zero number of components indicates that ID node was just created. @@ -352,7 +354,8 @@ void DepsgraphNodeBuilder::begin_build() else { id_info->id_cow = NULL; } - id_info->is_directly_visible = id_node->is_directly_visible; + id_info->previously_visible_components_mask = + id_node->visible_components_mask; BLI_ghash_insert(id_info_hash_, id_node->id_orig, id_info); id_node->id_cow = NULL; } diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h index 37000c958ce..74709f2b57f 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h @@ -35,6 +35,8 @@ #include "DEG_depsgraph.h" +#include "intern/nodes/deg_node_id.h" + struct Base; struct bArmature; struct bAction; @@ -225,10 +227,10 @@ struct DepsgraphNodeBuilder { struct IDInfo { /* Copy-on-written pointer of the corresponding ID. */ ID *id_cow; - /* State of the is_visible from ID node from previous state of the + /* Mask of visible components from previous state of the * dependency graph. */ - bool is_directly_visible; + IDComponentsMask previously_visible_components_mask; }; protected: |