[Bf-blender-cvs] [f1ad6b43b31] master: Depsgraph: Cleanup, split build_animation
Sergey Sharybin
noreply at git.blender.org
Wed Dec 6 10:32:50 CET 2017
Commit: f1ad6b43b316b4f6da2937f11a7aca4302a86dc8
Author: Sergey Sharybin
Date: Mon Dec 4 18:34:27 2017 +0100
Branches: master
https://developer.blender.org/rBf1ad6b43b316b4f6da2937f11a7aca4302a86dc8
Depsgraph: Cleanup, split build_animation
===================================================================
M source/blender/depsgraph/intern/builder/deg_builder_relations.cc
M source/blender/depsgraph/intern/builder/deg_builder_relations.h
===================================================================
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);
More information about the Bf-blender-cvs
mailing list