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 */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to