diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2018-10-24 12:31:24 +0300 |
---|---|---|
committer | Alexander Gavrilov <angavrilov@gmail.com> | 2018-10-24 13:45:03 +0300 |
commit | 547d31c8da1fcb938e91887909c5e2f3b3d180d5 (patch) | |
tree | 9add6d1e320972dcd874e83e298dbcf61793a90c /source/blender/depsgraph | |
parent | 6e3a9b9313a2dcbd5c8967387de36b4ecd312d3e (diff) |
Depsgraph: minor renaming and refactor of API for adding evaluation flags.
Diffstat (limited to 'source/blender/depsgraph')
5 files changed, 38 insertions, 36 deletions
diff --git a/source/blender/depsgraph/DEG_depsgraph_build.h b/source/blender/depsgraph/DEG_depsgraph_build.h index 4975f18f4ce..53138fc7c40 100644 --- a/source/blender/depsgraph/DEG_depsgraph_build.h +++ b/source/blender/depsgraph/DEG_depsgraph_build.h @@ -141,11 +141,11 @@ void DEG_add_object_relation(struct DepsNodeHandle *node, struct Object *object, eDepsObjectComponentType component, const char *description); -void DEG_add_object_customdata_relation(struct DepsNodeHandle *node, - struct Object *object, - eDepsObjectComponentType component, - uint64_t customdata_mask, - const char *description); +void DEG_add_object_relation_with_customdata(struct DepsNodeHandle *node, + struct Object *object, + eDepsObjectComponentType component, + uint64_t customdata_mask, + const char *description); void DEG_add_bone_relation(struct DepsNodeHandle *handle, struct Object *object, const char *bone_name, @@ -156,9 +156,9 @@ void DEG_add_object_cache_relation(struct DepsNodeHandle *handle, eDepsObjectComponentType component, const char *description); +void DEG_add_special_eval_flag(struct DepsNodeHandle *handle, struct ID *id, short flag); struct Depsgraph *DEG_get_graph_from_handle(struct DepsNodeHandle *handle); -void DEG_add_special_eval_flag(struct Depsgraph *graph, struct ID *id, short flag); /* ************************************************ */ diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc index ff3009a6ce5..30301cdf29a 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc @@ -667,7 +667,6 @@ void DepsgraphNodeBuilder::build_object_data( if (object->data == NULL) { return; } - IDDepsNode *id_node = graph_->find_id_node(&object->id); /* type-specific data. */ switch (object->type) { case OB_MESH: @@ -678,15 +677,6 @@ void DepsgraphNodeBuilder::build_object_data( case OB_LATTICE: case OB_GPENCIL: build_object_data_geometry(object, is_object_visible); - /* TODO(sergey): Only for until we support granular - * update of curves. - */ - if (object->type == OB_FONT) { - Curve *curve = (Curve *)object->data; - if (curve->textoncurve) { - id_node->eval_flags |= DAG_EVAL_NEED_CURVE_PATH; - } - } break; case OB_ARMATURE: if (ID_IS_LINKED(object) && object->proxy_from != NULL) { diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index c40df4cb74e..e0c98b40186 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -286,6 +286,17 @@ void DepsgraphRelationBuilder::add_customdata_mask(const ComponentKey &key, uint } } +void DepsgraphRelationBuilder::add_special_eval_flag(ID *id, short flag) +{ + DEG::IDDepsNode *id_node = graph_->find_id_node(id); + if (id_node == NULL) { + BLI_assert(!"ID should always be valid"); + } + else { + id_node->eval_flags |= flag; + } +} + DepsRelation *DepsgraphRelationBuilder::add_time_relation( TimeSourceDepsNode *timesrc, DepsNode *node_to, @@ -670,6 +681,15 @@ void DepsgraphRelationBuilder::build_object_data(Object *object) case OB_GPENCIL: { build_object_data_geometry(object); + /* TODO(sergey): Only for until we support granular + * update of curves. + */ + if (object->type == OB_FONT) { + Curve *curve = (Curve *)object->data; + if (curve->textoncurve) { + add_special_eval_flag(&curve->textoncurve->id, DAG_EVAL_NEED_CURVE_PATH); + } + } break; } case OB_ARMATURE: diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.h b/source/blender/depsgraph/intern/builder/deg_builder_relations.h index d3c7b0ebfaf..32330f5680d 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.h +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.h @@ -201,6 +201,7 @@ struct DepsgraphRelationBuilder bool check_unique = false); void add_customdata_mask(const ComponentKey &key, uint64_t mask); + void add_special_eval_flag(ID *object, short flag); void build_id(ID *id); void build_layer_collections(ListBase *lb); diff --git a/source/blender/depsgraph/intern/depsgraph_build.cc b/source/blender/depsgraph/intern/depsgraph_build.cc index 957ca1a4275..e38cebbf525 100644 --- a/source/blender/depsgraph/intern/depsgraph_build.cc +++ b/source/blender/depsgraph/intern/depsgraph_build.cc @@ -131,11 +131,11 @@ void DEG_add_object_relation(DepsNodeHandle *handle, description); } -void DEG_add_object_customdata_relation(DepsNodeHandle *handle, - Object *object, - eDepsObjectComponentType component, - uint64_t customdata_mask, - const char *description) +void DEG_add_object_relation_with_customdata(DepsNodeHandle *handle, + Object *object, + eDepsObjectComponentType component, + uint64_t customdata_mask, + const char *description) { DEG::eDepsNode_Type type = deg_build_object_component_type(component); DEG::ComponentKey comp_key(&object->id, type); @@ -178,26 +178,17 @@ void DEG_add_bone_relation(DepsNodeHandle *handle, description); } -struct Depsgraph *DEG_get_graph_from_handle(struct DepsNodeHandle *handle) +void DEG_add_special_eval_flag(struct DepsNodeHandle *handle, ID *id, short flag) { DEG::DepsNodeHandle *deg_handle = get_handle(handle); - DEG::DepsgraphRelationBuilder *relation_builder = deg_handle->builder; - return reinterpret_cast<Depsgraph *>(relation_builder->getGraph()); + deg_handle->builder->add_special_eval_flag(id, flag); } -void DEG_add_special_eval_flag(Depsgraph *graph, ID *id, short flag) +struct Depsgraph *DEG_get_graph_from_handle(struct DepsNodeHandle *handle) { - DEG::Depsgraph *deg_graph = reinterpret_cast<DEG::Depsgraph *>(graph); - if (graph == NULL) { - BLI_assert(!"Graph should always be valid"); - return; - } - DEG::IDDepsNode *id_node = deg_graph->find_id_node(id); - if (id_node == NULL) { - BLI_assert(!"ID should always be valid"); - return; - } - id_node->eval_flags |= flag; + DEG::DepsNodeHandle *deg_handle = get_handle(handle); + DEG::DepsgraphRelationBuilder *relation_builder = deg_handle->builder; + return reinterpret_cast<Depsgraph *>(relation_builder->getGraph()); } /* ******************** */ |