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
This commit is contained in:
2019-01-29 11:59:17 +01:00
parent 7400aa7e59
commit 83f8f44791
22 changed files with 41 additions and 124 deletions

View File

@@ -132,12 +132,6 @@ void deg_graph_build_finalize(Main *bmain, Depsgraph *graph)
ID *id = id_node->id_orig;
id_node->finalize_build(graph);
int flag = 0;
if ((id->recalc & ID_RECALC_ALL)) {
AnimData *adt = BKE_animdata_from_id(id);
if (adt != NULL && (adt->recalc & ADT_RECALC_ANIM) != 0) {
flag |= ID_RECALC_ANIMATION;
}
}
/* Tag rebuild if special evaluation flags changed. */
if (id_node->eval_flags != id_node->previous_eval_flags) {
flag |= ID_RECALC_TRANSFORM | ID_RECALC_GEOMETRY;

View File

@@ -166,13 +166,6 @@ void DepsgraphNodeBuilder::build_rig(Object *object, bool is_object_visible)
if (object->pose == NULL || (object->pose->flag & POSE_RECALC)) {
/* By definition, no need to tag depsgraph as dirty from here, so we can pass NULL bmain. */
BKE_pose_rebuild(NULL, object, armature, true);
/* XXX: Without this animation gets lost in certain circumstances
* after loading file. Need to investigate further since it does
* not happen with simple scenes..
*/
if (object->adt) {
object->adt->recalc |= ADT_RECALC_ANIM;
}
}
/* Speed optimization for animation lookups. */
if (object->pose != NULL) {