diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-05-29 00:18:47 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-05-29 00:24:16 +0300 |
commit | 359469a39a49dd2efe3e9b94a3d03600e32cd887 (patch) | |
tree | 3537bd97668b35402f1fe39b14ae89a5673dd266 /source/blender | |
parent | 9b1a15d8f8ec99f9101e118f3f955983c9dccaaf (diff) |
Fix T55204: proxy object disappearing randomly.
The problem was a missing depsgraph relation between the transforms of
the object and its proxy, it was only there for the pose.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/intern/object_update.c | 3 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_relations.cc | 6 |
2 files changed, 7 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/object_update.c b/source/blender/blenkernel/intern/object_update.c index 2d499e4684e..d21a1326392 100644 --- a/source/blender/blenkernel/intern/object_update.c +++ b/source/blender/blenkernel/intern/object_update.c @@ -276,11 +276,12 @@ void BKE_object_handle_data_update( /* quick cache removed */ } -bool BKE_object_eval_proxy_copy(Depsgraph *UNUSED(depsgraph), +bool BKE_object_eval_proxy_copy(Depsgraph *depsgraph, Object *object) { /* Handle proxy copy for target, */ if (ID_IS_LINKED(object) && object->proxy_from) { + DEG_debug_print_eval(depsgraph, __func__, object->id.name, object); if (object->proxy_from->proxy_group) { /* Transform proxy into group space. */ Object *obg = object->proxy_from->proxy_group; diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index 9a1bd87f93d..64bdbe49dac 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -549,7 +549,11 @@ void DepsgraphRelationBuilder::build_object(Base *base, Object *object) */ ComponentKey ob_pose_key(&object->id, DEG_NODE_TYPE_EVAL_POSE); ComponentKey proxy_pose_key(&object->proxy->id, DEG_NODE_TYPE_EVAL_POSE); - add_relation(ob_pose_key, proxy_pose_key, "Proxy"); + add_relation(ob_pose_key, proxy_pose_key, "Proxy Pose"); + + ComponentKey ob_transform_key(&object->id, DEG_NODE_TYPE_TRANSFORM); + ComponentKey proxy_transform_key(&object->proxy->id, DEG_NODE_TYPE_TRANSFORM); + add_relation(ob_transform_key, proxy_transform_key, "Proxy Transform"); } /* Object dupligroup. */ if (object->dup_group != NULL) { |