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
path: root/source
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2010-01-21 01:21:10 +0300
committerJoshua Leung <aligorith@gmail.com>2010-01-21 01:21:10 +0300
commit946cdd8ff6ad6e799c1aeaea9540b599e9648476 (patch)
tree34cf54cb0dcde585a764bae39bf07f37689fb7a0 /source
parentc781c3e6dcb10f774763cff65da3c9e4551cbfb2 (diff)
Proxy + Transforms Bugfix:
This commit fixes some update issues for some rig setups used for Durian, with proxies not updating correctly during transforms. The setup involves an armature that has been proxified, which deforms a mesh in the group it came from. One of the bones in this armature is constrained to an empty that was added in the shot file. When the empty is moved around, the mesh does not deform in response to the armature until the transform is confirmed. This was because the depsgraph tagging was not comprehensive enough, since only a few cached tags got restored (but not all). For now, full depsgraph tagging is now performed for objects as they are transformed.
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/transform/transform_generics.c19
1 files changed, 4 insertions, 15 deletions
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index e719f1cf133..3a6f30244ec 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -774,16 +774,6 @@ void recalcData(TransInfo *t)
else {
int i;
- for(base= FIRSTBASE; base; base= base->next) {
- Object *ob= base->object;
-
- /* this flag is from depgraph, was stored in initialize phase, handled in drawview.c */
- if(base->flag & BA_HAS_RECALC_OB)
- ob->recalc |= OB_RECALC_OB;
- if(base->flag & BA_HAS_RECALC_DATA)
- ob->recalc |= OB_RECALC_DATA;
- }
-
for (i = 0; i < t->total; i++) {
TransData *td = t->data + i;
Object *ob = td->ob;
@@ -804,11 +794,10 @@ void recalcData(TransInfo *t)
autokeyframe_ob_cb_func(NULL, t->scene, (View3D *)t->view, ob, t->mode);
}
- /* proxy exception */
- if(ob->proxy)
- ob->proxy->recalc |= ob->recalc;
- if(ob->proxy_group)
- group_tag_recalc(ob->proxy_group->dup_group);
+ /* sets recalc flags fully, instead of flushing existing ones
+ * otherwise proxies don't function correctly
+ */
+ DAG_id_flush_update(&ob->id, OB_RECALC);
}
}