Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2018-05-16 16:41:53 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2018-05-16 16:47:50 +0300
commitf0c0d11ea2cfbe44b079a544a5c91fe888f28c80 (patch)
treec26b64242f200992e954160cf37245e6ecf2d5a4 /source/blender/blenkernel
parent2ba0951e5219aa82f3e5c00890512c8ba8889c9d (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')
-rw-r--r--source/blender/blenkernel/intern/armature.c4
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);
}