[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