[Bf-blender-cvs] [3b00f6625cc] functions: Merge branch 'master' into functions

Jacques Lucke noreply at git.blender.org
Tue Apr 30 11:06:28 CEST 2019


Commit: 3b00f6625cc30f9ff89a490fd091defa9caa4a35
Author: Jacques Lucke
Date:   Tue Apr 30 10:55:36 2019 +0200
Branches: functions
https://developer.blender.org/rB3b00f6625cc30f9ff89a490fd091defa9caa4a35

Merge branch 'master' into functions

This also removes dependency creation for function drivers
(due to merge conflicts that I could not resolve yet).

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



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

diff --cc source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index 7782ce3df02,9ea41e54a59..11008039afb
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@@ -1413,33 -1410,28 +1412,29 @@@ void DepsgraphRelationBuilder::build_dr
    LISTBASE_FOREACH (DriverVar *, dvar, &driver->variables) {
      /* Only used targets. */
      DRIVER_TARGETS_USED_LOOPER_BEGIN (dvar) {
-       if (dtar->id == NULL) {
+       ID *target_id = dtar->id;
+       if (target_id == NULL) {
          continue;
        }
-       build_id(dtar->id);
- 
-       if (dvar->type == DVAR_TYPE_FUNCTION) {
-         auto fn = (FN::Function *)get_driver_variable_function(dvar);
-         if (fn != NULL) {
-           FN::Dependencies dependencies;
-           fn->body<FN::DependenciesBody>()->dependencies(dependencies);
-           dependencies.add_relations((struct DepsgraphRelationBuilderRef *)this,
-                                      (struct OperationKeyRef *)&driver_key);
-           fn->decref();
+       build_id(target_id);
+       build_driver_id_property(target_id, dtar->rna_path);
+       /* Look up the proxy - matches dtar_id_ensure_proxy_from during evaluation. */
+       Object *object = NULL;
+       if (GS(target_id->name) == ID_OB) {
+         object = (Object *)target_id;
+         if (object->proxy_from != NULL) {
+           /* Redirect the target to the proxy, like in evaluation. */
+           object = object->proxy_from;
+           target_id = &object->id;
+           /* Prepare the redirected target. */
+           build_id(target_id);
+           build_driver_id_property(target_id, dtar->rna_path);
          }
        }
- 
-       build_driver_id_property(dtar->id, dtar->rna_path);
-       /* Initialize relations coming to proxy_from. */
-       Object *proxy_from = NULL;
-       if ((GS(dtar->id->name) == ID_OB) && (((Object *)dtar->id)->proxy_from != NULL)) {
-         proxy_from = ((Object *)dtar->id)->proxy_from;
-         build_id(&proxy_from->id);
-       }
        /* Special handling for directly-named bones. */
-       if ((dtar->flag & DTAR_FLAG_STRUCT_REF) && (((Object *)dtar->id)->type == OB_ARMATURE) &&
+       if ((dtar->flag & DTAR_FLAG_STRUCT_REF) && (object && object->type == OB_ARMATURE) &&
            (dtar->pchan_name[0])) {
-         Object *object = (Object *)dtar->id;
++
          bPoseChannel *target_pchan = BKE_pose_channel_find_name(object->pose, dtar->pchan_name);
          if (target_pchan == NULL) {
            continue;



More information about the Bf-blender-cvs mailing list