diff options
Diffstat (limited to 'source/blender/depsgraph/intern/depsgraph_tag.cc')
-rw-r--r-- | source/blender/depsgraph/intern/depsgraph_tag.cc | 102 |
1 files changed, 52 insertions, 50 deletions
diff --git a/source/blender/depsgraph/intern/depsgraph_tag.cc b/source/blender/depsgraph/intern/depsgraph_tag.cc index 6374354a154..491548e7a18 100644 --- a/source/blender/depsgraph/intern/depsgraph_tag.cc +++ b/source/blender/depsgraph/intern/depsgraph_tag.cc @@ -143,7 +143,7 @@ void depsgraph_base_flags_tag_to_component_opcode( } void depsgraph_tag_to_component_opcode(const ID *id, - eDepsgraph_Tag tag, + IDRecalcFlag tag, eDepsNode_Type *component_type, eDepsOperation_Code *operation_code) { @@ -157,20 +157,20 @@ void depsgraph_tag_to_component_opcode(const ID *id, return; } switch (tag) { - case DEG_TAG_TRANSFORM: + case ID_RECALC_TRANSFORM: *component_type = DEG_NODE_TYPE_TRANSFORM; break; - case DEG_TAG_GEOMETRY: + case ID_RECALC_GEOMETRY: depsgraph_geometry_tag_to_component(id, component_type); break; - case DEG_TAG_TIME: + case ID_RECALC_ANIMATION: *component_type = DEG_NODE_TYPE_ANIMATION; break; - case DEG_TAG_PSYS_REDO: - case DEG_TAG_PSYS_RESET: - case DEG_TAG_PSYS_TYPE: - case DEG_TAG_PSYS_CHILD: - case DEG_TAG_PSYS_PHYS: + case ID_RECALC_PSYS_REDO: + case ID_RECALC_PSYS_RESET: + case ID_RECALC_PSYS_YPE: + case ID_RECALC_PSYS_CHILD: + case ID_RECALC_PSYS_PHYS: if (id_type == ID_PA) { /* NOTES: * - For particle settings node we need to use different @@ -184,10 +184,10 @@ void depsgraph_tag_to_component_opcode(const ID *id, *component_type = DEG_NODE_TYPE_EVAL_PARTICLES; } break; - case DEG_TAG_COPY_ON_WRITE: + case ID_RECALC_COPY_ON_WRITE: *component_type = DEG_NODE_TYPE_COPY_ON_WRITE; break; - case DEG_TAG_SHADING_UPDATE: + case ID_RECALC_SHADING: if (id_type == ID_NT) { *component_type = DEG_NODE_TYPE_SHADING_PARAMETERS; } @@ -195,25 +195,26 @@ void depsgraph_tag_to_component_opcode(const ID *id, *component_type = DEG_NODE_TYPE_SHADING; } break; - case DEG_TAG_SELECT_UPDATE: + case ID_RECALC_SELECT: depsgraph_select_tag_to_component_opcode(id, component_type, operation_code); break; - case DEG_TAG_BASE_FLAGS_UPDATE: + case ID_RECALC_BASE_FLAGS: depsgraph_base_flags_tag_to_component_opcode(id, component_type, operation_code); break; - case DEG_TAG_POINT_CACHE_UPDATE: + case ID_RECALC_POINT_CACHE: *component_type = DEG_NODE_TYPE_POINT_CACHE; break; - case DEG_TAG_EDITORS_UPDATE: + case ID_RECALC_EDITORS: /* There is no such node in depsgraph, this tag is to be handled * separately. */ break; - case DEG_TAG_PSYS_ALL: + case ID_RECALC_ALL: + case ID_RECALC_PSYS_ALL: BLI_assert(!"Should not happen"); break; } @@ -273,16 +274,16 @@ void depsgraph_tag_component(Depsgraph *graph, /* This is a tag compatibility with legacy code. * - * Mainly, old code was tagging object with OB_RECALC_DATA tag to inform + * Mainly, old code was tagging object with ID_RECALC_GEOMETRY tag to inform * that object's data datablock changed. Now API expects that ID is given * explicitly, but not all areas are aware of this yet. */ void deg_graph_id_tag_legacy_compat(Main *bmain, Depsgraph *depsgraph, ID *id, - eDepsgraph_Tag tag) + IDRecalcFlag tag) { - if (tag == DEG_TAG_GEOMETRY || tag == 0) { + if (tag == ID_RECALC_GEOMETRY || tag == 0) { switch (GS(id->name)) { case ID_OB: { @@ -334,9 +335,9 @@ static void deg_graph_id_tag_update_single_flag(Main *bmain, Depsgraph *graph, ID *id, IDDepsNode *id_node, - eDepsgraph_Tag tag) + IDRecalcFlag tag) { - if (tag == DEG_TAG_EDITORS_UPDATE) { + if (tag == ID_RECALC_EDITORS) { if (graph != NULL) { depsgraph_update_editors_tag(bmain, graph, id); } @@ -380,7 +381,7 @@ static void deg_graph_id_tag_update_single_flag(Main *bmain, } -string stringify_append_bit(const string& str, eDepsgraph_Tag tag) +string stringify_append_bit(const string& str, IDRecalcFlag tag) { string result = str; if (!result.empty()) { @@ -400,13 +401,13 @@ string stringify_update_bitfield(int flag) /* Special cases to avoid ALL flags form being split into * individual bits. */ - if ((current_flag & DEG_TAG_PSYS_ALL) == DEG_TAG_PSYS_ALL) { - result = stringify_append_bit(result, DEG_TAG_PSYS_ALL); + if ((current_flag & ID_RECALC_PSYS_ALL) == ID_RECALC_PSYS_ALL) { + result = stringify_append_bit(result, ID_RECALC_PSYS_ALL); } /* Handle all the rest of the flags. */ while (current_flag != 0) { - eDepsgraph_Tag tag = - (eDepsgraph_Tag)(1 << bitscan_forward_clear_i(¤t_flag)); + IDRecalcFlag tag = + (IDRecalcFlag)(1 << bitscan_forward_clear_i(¤t_flag)); result = stringify_append_bit(result, tag); } return result; @@ -425,7 +426,7 @@ void deg_graph_node_tag_zero(Main *bmain, Depsgraph *graph, IDDepsNode *id_node) } ID *id = id_node->id_orig; /* TODO(sergey): Which recalc flags to set here? */ - id->recalc |= ID_RECALC_ALL & ~(DEG_TAG_PSYS_ALL | ID_RECALC_ANIMATION); + id->recalc |= ID_RECALC_ALL & ~(ID_RECALC_PSYS_ALL | ID_RECALC_ANIMATION); GHASH_FOREACH_BEGIN(ComponentDepsNode *, comp_node, id_node->components) { if (comp_node->type == DEG_NODE_TYPE_ANIMATION) { @@ -434,7 +435,7 @@ void deg_graph_node_tag_zero(Main *bmain, Depsgraph *graph, IDDepsNode *id_node) comp_node->tag_update(graph, DEG_UPDATE_SOURCE_USER_EDIT); } GHASH_FOREACH_END(); - deg_graph_id_tag_legacy_compat(bmain, graph, id, (eDepsgraph_Tag)0); + deg_graph_id_tag_legacy_compat(bmain, graph, id, (IDRecalcFlag)0); } void deg_graph_id_tag_update(Main *bmain, Depsgraph *graph, ID *id, int flag) @@ -454,11 +455,11 @@ void deg_graph_id_tag_update(Main *bmain, Depsgraph *graph, ID *id, int flag) if (flag == 0) { deg_graph_node_tag_zero(bmain, graph, id_node); } - id->recalc |= (flag & PSYS_RECALC); + id->recalc |= flag; int current_flag = flag; while (current_flag != 0) { - eDepsgraph_Tag tag = - (eDepsgraph_Tag)(1 << bitscan_forward_clear_i(¤t_flag)); + IDRecalcFlag tag = + (IDRecalcFlag)(1 << bitscan_forward_clear_i(¤t_flag)); deg_graph_id_tag_update_single_flag(bmain, graph, id, @@ -471,7 +472,7 @@ void deg_graph_id_tag_update(Main *bmain, Depsgraph *graph, ID *id, int flag) * physics did change and that cache is to be invalidated. */ deg_graph_id_tag_update_single_flag( - bmain, graph, id, id_node, DEG_TAG_POINT_CACHE_UPDATE); + bmain, graph, id, id_node, ID_RECALC_POINT_CACHE); } void deg_id_tag_update(Main *bmain, ID *id, int flag) @@ -509,7 +510,7 @@ void deg_graph_on_visible_update(Main *bmain, Depsgraph *graph) } int flag = 0; if (!DEG::deg_copy_on_write_is_expanded(id_node->id_cow)) { - flag |= DEG_TAG_COPY_ON_WRITE; + flag |= ID_RECALC_COPY_ON_WRITE; } /* We only tag components which needs an update. Tagging everything is * not a good idea because that might reset particles cache (or any @@ -519,7 +520,7 @@ void deg_graph_on_visible_update(Main *bmain, Depsgraph *graph) */ const ID_Type id_type = GS(id_node->id_orig->name); if (id_type == ID_OB) { - flag |= OB_RECALC_OB | OB_RECALC_DATA; + flag |= ID_RECALC_TRANSFORM | ID_RECALC_GEOMETRY; } deg_graph_id_tag_update(bmain, graph, id_node->id_orig, flag); if (id_type == ID_SCE) { @@ -583,24 +584,25 @@ eDepsNode_Type deg_geometry_tag_to_component(const ID *id) } // namespace DEG -const char *DEG_update_tag_as_string(eDepsgraph_Tag flag) +const char *DEG_update_tag_as_string(IDRecalcFlag flag) { switch (flag) { - case DEG_TAG_TRANSFORM: return "TRANSFORM"; - case DEG_TAG_GEOMETRY: return "GEOMETRY"; - case DEG_TAG_TIME: return "TIME"; - case DEG_TAG_PSYS_REDO: return "PSYS_REDO"; - case DEG_TAG_PSYS_RESET: return "PSYS_RESET"; - case DEG_TAG_PSYS_TYPE: return "PSYS_TYPE"; - case DEG_TAG_PSYS_CHILD: return "PSYS_CHILD"; - case DEG_TAG_PSYS_PHYS: return "PSYS_PHYS"; - case DEG_TAG_PSYS_ALL: return "PSYS_ALL"; - case DEG_TAG_COPY_ON_WRITE: return "COPY_ON_WRITE"; - case DEG_TAG_SHADING_UPDATE: return "SHADING_UPDATE"; - case DEG_TAG_SELECT_UPDATE: return "SELECT_UPDATE"; - case DEG_TAG_BASE_FLAGS_UPDATE: return "BASE_FLAGS_UPDATE"; - case DEG_TAG_POINT_CACHE_UPDATE: return "POINT_CACHE_UPDATE"; - case DEG_TAG_EDITORS_UPDATE: return "EDITORS_UPDATE"; + case ID_RECALC_TRANSFORM: return "TRANSFORM"; + case ID_RECALC_GEOMETRY: return "GEOMETRY"; + case ID_RECALC_ANIMATION: return "ANIMATION"; + case ID_RECALC_PSYS_REDO: return "PSYS_REDO"; + case ID_RECALC_PSYS_RESET: return "PSYS_RESET"; + case ID_RECALC_PSYS_YPE: return "PSYS_TYPE"; + case ID_RECALC_PSYS_CHILD: return "PSYS_CHILD"; + case ID_RECALC_PSYS_PHYS: return "PSYS_PHYS"; + case ID_RECALC_PSYS_ALL: return "PSYS_ALL"; + case ID_RECALC_COPY_ON_WRITE: return "COPY_ON_WRITE"; + case ID_RECALC_SHADING: return "SHADING"; + case ID_RECALC_SELECT: return "SELECT"; + case ID_RECALC_BASE_FLAGS: return "BASE_FLAGS"; + case ID_RECALC_POINT_CACHE: return "POINT_CACHE"; + case ID_RECALC_EDITORS: return "EDITORS"; + case ID_RECALC_ALL: return "ALL"; } BLI_assert(!"Unhandled update flag, should never happen!"); return "UNKNOWN"; |