[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