diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2018-05-16 16:41:53 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2018-05-16 16:47:50 +0300 |
commit | f0c0d11ea2cfbe44b079a544a5c91fe888f28c80 (patch) | |
tree | c26b64242f200992e954160cf37245e6ecf2d5a4 /source/blender/blenkernel/intern/armature.c | |
parent | 2ba0951e5219aa82f3e5c00890512c8ba8889c9d (diff) |
Fix T55076: Hack around to break correct behavior of 2.8 and get back broken-used-as-feature one from 2.7.
Locked bones of proxies should not be editable, at all. But lack of
update from linked rest pose in 2.7 allows to pose and animate locked
bones (not to pose them without animation though, or you'd lose your
pose on next file save & reload).
this is used by artists to always lock all their bones in a rig, so that
proxies fully update when lib rig is modified...
For now, restore that broken behavior in 2.8 by not updating proxies
against lib armature in CoW context (makes sense anyway, we are
currently doing a lot of useless thing when copying data for depsgraph
evaluation!).
Diffstat (limited to 'source/blender/blenkernel/intern/armature.c')
-rw-r--r-- | source/blender/blenkernel/intern/armature.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index 63846b31c33..f409cdc3a74 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -1991,7 +1991,9 @@ void BKE_pose_rebuild(Object *ob, bArmature *arm) /* printf("rebuild pose %s, %d bones\n", ob->id.name, counter); */ /* synchronize protected layers with proxy */ - if (ob->proxy) { + /* HACK! To preserve 2.7x behavior that you always can pose even locked bones, + * do not do any restauration if this is a COW temp copy! */ + if (ob->proxy != NULL && (ob->id.tag & LIB_TAG_COPY_ON_WRITE) == 0) { BKE_object_copy_proxy_drivers(ob, ob->proxy); pose_proxy_synchronize(ob, ob->proxy, arm->layer_protected); } |