diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-01-29 13:59:17 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-01-31 14:04:57 +0300 |
commit | 83f8f44791374dd051728e44d89fbdeee15c60aa (patch) | |
tree | addcd6991adfcf578bec05b022875c98509deda9 /source/blender/blenkernel/intern/object_update.c | |
parent | 7400aa7e595063510ce9f29fa1b02ebd3f9296e2 (diff) |
Fix T59495, T59992, T59904, T59178, T60598: broken keyframed value editing.
This removes a bunch of animation/driver evaluations and recalc flags that
should be redundant in the new depsgraph, and were incorrectly affecting
the evaluated scene in a permanent way.
Still two cases that could be removed if the depsgraph is improved, in
BKE_object_handle_data_update and BKE_cachefile_update_frame.
For physics subframe interpolation there are also still calls to
BKE_object_where_is_calc that should ideally be removed as well, though
they are not known to cause keyframing bugs.
Differential Revision: https://developer.blender.org/D4274
Diffstat (limited to 'source/blender/blenkernel/intern/object_update.c')
-rw-r--r-- | source/blender/blenkernel/intern/object_update.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/source/blender/blenkernel/intern/object_update.c b/source/blender/blenkernel/intern/object_update.c index 5a25880a7d1..1b071785684 100644 --- a/source/blender/blenkernel/intern/object_update.c +++ b/source/blender/blenkernel/intern/object_update.c @@ -158,22 +158,13 @@ void BKE_object_handle_data_update( Scene *scene, Object *ob) { - ID *data_id = (ID *)ob->data; - AnimData *adt = BKE_animdata_from_id(data_id); - Key *key; float ctime = BKE_scene_frame_get(scene); DEG_debug_print_eval(depsgraph, __func__, ob->id.name, ob); - /* TODO(sergey): Only used by legacy depsgraph. */ - if (adt) { - /* evaluate drivers - datalevel */ - /* XXX: for mesh types, should we push this to evaluated mesh instead? */ - BKE_animsys_evaluate_animdata(depsgraph, scene, data_id, adt, ctime, ADT_RECALC_DRIVERS); - } - - /* TODO(sergey): Only used by legacy depsgraph. */ - key = BKE_key_from_object(ob); + /* TODO: only here to evaluate drivers twice to fix dependency graph + * not handling shape key values that depend on each other. */ + Key *key = BKE_key_from_object(ob); if (key && key->block.first) { if (!(ob->shapeflag & OB_SHAPE_LOCK)) BKE_animsys_evaluate_animdata(depsgraph, scene, &key->id, key->adt, ctime, ADT_RECALC_DRIVERS); |