[Bf-blender-cvs] [b2ce9c2] depsgraph_refactor: Code Cleanup: Improved way that driver data gets printed for output

Joshua Leung noreply at git.blender.org
Tue Dec 9 10:10:28 CET 2014


Commit: b2ce9c2b3436a0ba171bf1d29554c6f3f11de9d0
Author: Joshua Leung
Date:   Tue Dec 9 16:32:58 2014 +1300
Branches: depsgraph_refactor
https://developer.blender.org/rBb2ce9c2b3436a0ba171bf1d29554c6f3f11de9d0

Code Cleanup: Improved way that driver data gets printed for output

===================================================================

M	source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
M	source/blender/depsgraph/intern/depsgraph_build_relations.cpp
M	source/blender/depsgraph/intern/depsgraph_type_defines.cpp
M	source/blender/depsgraph/intern/depsgraph_types.h

===================================================================

diff --git a/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp b/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
index 7c28879..a4a1b78 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
@@ -377,15 +377,15 @@ void DepsgraphNodeBuilder::build_animdata(ID *id)
  * < id: ID-Block that driver is attached to
  * < fcu: Driver-FCurve
  */
-OperationDepsNode *DepsgraphNodeBuilder::build_driver(ID *id, FCurve *fcurve)
+OperationDepsNode *DepsgraphNodeBuilder::build_driver(ID *id, FCurve *fcu)
 {
-	ChannelDriver *driver = fcurve->driver;
+	ChannelDriver *driver = fcu->driver;
 	
 	/* create data node for this driver ..................................... */
 	TimeSourceDepsNode *time_src = m_graph->find_time_source();
 	OperationDepsNode *driver_op = add_operation_node(id, DEPSNODE_TYPE_PARAMETERS,
-	                                                  DEPSOP_TYPE_EXEC, bind(BKE_animsys_eval_driver, _1, id, fcurve, time_src),
-	                                                  deg_op_name_driver(driver));
+	                                                  DEPSOP_TYPE_EXEC, bind(BKE_animsys_eval_driver, _1, id, fcu, time_src),
+	                                                  deg_op_name_driver(fcu));
 	
 	/* tag "scripted expression" drivers as needing Python (due to GIL issues, etc.) */
 	if (driver->type == DRIVER_TYPE_PYTHON) {
diff --git a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
index 5f6d333..df0528a 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
@@ -514,41 +514,42 @@ void DepsgraphRelationBuilder::build_animdata(ID *id)
 	}
 	
 	/* drivers */
-	for (FCurve *fcurve = (FCurve *)adt->drivers.first; fcurve; fcurve = fcurve->next) {
-		OperationKey driver_key(id, DEPSNODE_TYPE_PARAMETERS, deg_op_name_driver(fcurve->driver));
+	for (FCurve *fcu = (FCurve *)adt->drivers.first; fcu; fcu = fcu->next) {
+		OperationKey driver_key(id, DEPSNODE_TYPE_PARAMETERS, deg_op_name_driver(fcu));
 		
-		/* hook up update callback associated with F-Curve */
-		// ...
+		/* create the driver's relations to targets */
+		build_driver(id, fcu);
 		
 		/* prevent driver from occurring before own animation... */
 		if (adt->action || adt->nla_tracks.first) {
 			add_relation(adt_key, driver_key, DEPSREL_TYPE_OPERATION, 
 						 "[AnimData Before Drivers] DepsRel");
 		}
-		
-		build_driver(id, fcurve);
 	}
 }
 
-void DepsgraphRelationBuilder::build_driver(ID *id, FCurve *fcurve)
+void DepsgraphRelationBuilder::build_driver(ID *id, FCurve *fcu)
 {
-	ChannelDriver *driver = fcurve->driver;
-	OperationKey driver_key(id, DEPSNODE_TYPE_PARAMETERS, deg_op_name_driver(driver));
+	ChannelDriver *driver = fcu->driver;
+	OperationKey driver_key(id, DEPSNODE_TYPE_PARAMETERS, deg_op_name_driver(fcu));
 	
 	/* create dependency between driver and data affected by it */
 	/* - direct property relationship... */
-	RNAPathKey affected_key(id, fcurve->rna_path);
+	RNAPathKey affected_key(id, fcu->rna_path);
 	add_relation(driver_key, affected_key, DEPSREL_TYPE_DRIVER, "[Driver -> Data] DepsRel");
 	
+	/* hook up update callback associated with F-Curve */
+	// ...
+	
 	/* driver -> data components (for interleaved evaluation - bones/constraints/modifiers) */
 	// XXX: this probably shouldn't be inlined here like this...
-	if (strstr(fcurve->rna_path, "pose.bones[") != NULL) {
+	if (strstr(fcu->rna_path, "pose.bones[") != NULL) {
 		/* interleaved drivers during bone eval */
 		Object *ob = (Object *)id;
 		bPoseChannel *pchan;
 		char *bone_name;
 		
-		bone_name = BLI_str_quoted_substrN(fcurve->rna_path, "pose.bones[");
+		bone_name = BLI_str_quoted_substrN(fcu->rna_path, "pose.bones[");
 		pchan = BKE_pose_channel_find_name(ob->pose, bone_name);
 		
 		if (bone_name) {
@@ -561,7 +562,7 @@ void DepsgraphRelationBuilder::build_driver(ID *id, FCurve *fcurve)
 			add_relation(driver_key, bone_key, DEPSREL_TYPE_DRIVER, "[Driver -> SubData] DepsRel");
 		}
 		else {
-			printf("Couldn't find bone name for driver path - '%s'\n", fcurve->rna_path);
+			printf("Couldn't find bone name for driver path - '%s'\n", fcu->rna_path);
 		}
 	}
 	else {
@@ -595,20 +596,20 @@ void DepsgraphRelationBuilder::build_driver(ID *id, FCurve *fcurve)
 					/* get node associated with bone */
 					ComponentKey target_key(dtar->id, DEPSNODE_TYPE_BONE, pchan->name);
 					add_relation(target_key, driver_key, DEPSREL_TYPE_DRIVER_TARGET,
-					             "[Target -> Driver] DepsRel");
+					             "[Bone Target -> Driver] DepsRel");
 				}
 			}
 			else if (dtar->flag & DTAR_FLAG_STRUCT_REF) {
 				/* get node associated with the object's transforms */
 				ComponentKey target_key(dtar->id, DEPSNODE_TYPE_TRANSFORM);
 				add_relation(target_key, driver_key, DEPSREL_TYPE_DRIVER_TARGET,
-				             "[Target -> Driver] DepsRel");
+				             "[Ob Target -> Driver] DepsRel");
 			}
 			else {
 				/* resolve path to get node */
 				RNAPathKey target_key(dtar->id, dtar->rna_path ? dtar->rna_path : "");
 				add_relation(target_key, driver_key, DEPSREL_TYPE_DRIVER_TARGET,
-				             "[Target -> Driver] DepsRel");
+				             "[RNA Target -> Driver] DepsRel");
 			}
 		}
 		DRIVER_TARGETS_LOOPER_END
diff --git a/source/blender/depsgraph/intern/depsgraph_type_defines.cpp b/source/blender/depsgraph/intern/depsgraph_type_defines.cpp
index 3c121fd..6511b44 100644
--- a/source/blender/depsgraph/intern/depsgraph_type_defines.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_type_defines.cpp
@@ -277,17 +277,17 @@ const string deg_op_name_psys_eval = "PSys Eval";
 string deg_op_name_animdata(const ID *id)
 {
 	AnimData *adt = BKE_animdata_from_id((ID *)id);
-	return string("AnimData") + id->name + string((adt->action) ? adt->action->id.name : "<None>");
+	return string("[AnimData] ") + id->name + string((adt->action) ? adt->action->id.name : "<None>");
 }
 
-string deg_op_name_driver(const ChannelDriver *driver)
+string deg_op_name_driver(const FCurve *fcu)
 {
-	return string("Driver") + driver->expression;
+	return string("[Driver] ") + fcu->rna_path;
 }
 
 string deg_op_name_modifier(const ModifierData *md)
 {
-	return string("Modifier") +  md->name;
+	return string("[Modifier] ") +  md->name;
 }
 
 /* ******************************************************** */
diff --git a/source/blender/depsgraph/intern/depsgraph_types.h b/source/blender/depsgraph/intern/depsgraph_types.h
index 268af69..c32a385 100644
--- a/source/blender/depsgraph/intern/depsgraph_types.h
+++ b/source/blender/depsgraph/intern/depsgraph_types.h
@@ -103,8 +103,9 @@ extern const string deg_op_name_pose_eval_flush;
 extern const string deg_op_name_ik_solver;
 extern const string deg_op_name_spline_ik_solver;
 extern const string deg_op_name_psys_eval;
+
 string deg_op_name_animdata(const ID *id);
-string deg_op_name_driver(const ChannelDriver *driver);
+string deg_op_name_driver(const FCurve *driver_fcurve);
 string deg_op_name_modifier(const ModifierData *md);
 
 /* Type of operation */




More information about the Bf-blender-cvs mailing list