diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-12-04 20:34:27 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-12-06 12:21:33 +0300 |
commit | f1ad6b43b316b4f6da2937f11a7aca4302a86dc8 (patch) | |
tree | 0c1e8fdbc5f6ff49538310076b5cad1f7a02b71a /source/blender/depsgraph | |
parent | 9f9b666d9a281e813c50ee2de8337713066482f1 (diff) |
Depsgraph: Cleanup, split build_animation
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_relations.cc | 37 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_relations.h | 2 |
2 files changed, 25 insertions, 14 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index 522ed9956ca..58d80dc9553 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -871,25 +871,34 @@ void DepsgraphRelationBuilder::build_constraints(ID *id, void DepsgraphRelationBuilder::build_animdata(ID *id) { - AnimData *adt = BKE_animdata_from_id(id); + /* Animation curves and NLA. */ + build_animdata_curves(id); + /* Drivers. */ + build_animdata_drievrs(id); +} - if (adt == NULL) +void DepsgraphRelationBuilder::build_animdata_curves(ID *id) +{ + AnimData *adt = BKE_animdata_from_id(id); + if (adt == NULL) { return; - + } ComponentKey adt_key(id, DEG_NODE_TYPE_ANIMATION); - - /* animation */ - if (adt->action || adt->nla_tracks.first) { - /* wire up dependency to time source */ - TimeSourceKey time_src_key; - add_relation(time_src_key, adt_key, "TimeSrc -> Animation"); - - // XXX: Hook up specific update callbacks for special properties which may need it... - - // XXX: animdata "hierarchy" - top-level overrides need to go after lower-down + if (adt->action == NULL && adt->nla_tracks.first == NULL) { + return; } + /* Wire up dependency to time source. */ + TimeSourceKey time_src_key; + add_relation(time_src_key, adt_key, "TimeSrc -> Animation"); +} - /* drivers */ +void DepsgraphRelationBuilder::build_animdata_drievrs(ID *id) +{ + AnimData *adt = BKE_animdata_from_id(id); + if (adt == NULL) { + return; + } + ComponentKey adt_key(id, DEG_NODE_TYPE_ANIMATION); LINKLIST_FOREACH (FCurve *, fcu, &adt->drivers) { OperationKey driver_key(id, DEG_NODE_TYPE_PARAMETERS, diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.h b/source/blender/depsgraph/intern/builder/deg_builder_relations.h index 1cf2f9847e2..2b2e133e98e 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.h +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.h @@ -197,6 +197,8 @@ struct DepsgraphRelationBuilder ListBase *constraints, RootPChanMap *root_map); void build_animdata(ID *id); + void build_animdata_curves(ID *id); + void build_animdata_drievrs(ID *id); void build_driver(ID *id, FCurve *fcurve); void build_driver_data(ID *id, FCurve *fcurve); void build_driver_variables(ID *id, FCurve *fcurve); |