[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