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:
authorTon Roosendaal <ton@blender.org>2013-05-17 17:15:43 +0400
committerTon Roosendaal <ton@blender.org>2013-05-17 17:15:43 +0400
commite2f58d817a9012b4642b96ef9cff26ed906dd62d (patch)
tree98bebe074d4585c0483ad90f0a946c4d552083e4 /source/blender/blenkernel/intern/object.c
parent27baa34ba4d5b94f640937f2bf00a9155843d368 (diff)
Bug fix, own collection.
Shapekey drivers were executed for every call to derivedmesh, which shouldn't happen. It now only runs on the object_update() function, once for every depsgraph change. Error was found while testing preview render in viewport. On each render, the animsys sent a 'changed data' because of the shapekey drivers being called, causing eternal re-render loops (without showing anything).
Diffstat (limited to 'source/blender/blenkernel/intern/object.c')
-rw-r--r--source/blender/blenkernel/intern/object.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 57fd555d57e..741c4f5429e 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -2621,6 +2621,7 @@ void BKE_object_handle_update_ex(Scene *scene, Object *ob,
if (ob->recalc & OB_RECALC_DATA) {
ID *data_id = (ID *)ob->data;
AnimData *adt = BKE_animdata_from_id(data_id);
+ Key *key;
float ctime = BKE_scene_frame_get(scene);
if (G.debug & G_DEBUG)
@@ -2631,6 +2632,12 @@ void BKE_object_handle_update_ex(Scene *scene, Object *ob,
/* XXX: for mesh types, should we push this to derivedmesh instead? */
BKE_animsys_evaluate_animdata(scene, data_id, adt, ctime, ADT_RECALC_DRIVERS);
}
+
+ key = BKE_key_from_object(ob);
+ if (key && key->block.first) {
+ if (!(ob->shapeflag & OB_SHAPE_LOCK))
+ BKE_animsys_evaluate_animdata(scene, &key->id, key->adt, ctime, ADT_RECALC_DRIVERS);
+ }
/* includes all keys and modifiers */
switch (ob->type) {