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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2010-07-07 22:47:49 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2010-07-07 22:47:49 +0400
commitc689e46ff306790e3c9953792b91c12b42000d23 (patch)
treef3541bde5e0c89ec20905be5782d892e4249af30 /source/blender/blenkernel/intern
parent356a8697f2999c5372f3fba140a65b4459813a48 (diff)
Fix #22340: sintel appears in seemingly random poses on load.
Pose proxy synchronization happened after drivers were already evaluated, now moved to start of object_handle_update.
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r--source/blender/blenkernel/intern/object.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 1b8405a91de..78ec473ef93 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -2479,6 +2479,17 @@ void object_handle_update(Scene *scene, Object *ob)
if(ob->pose)
make_pose_channels_hash(ob->pose);
+ if(ob->recalc & OB_RECALC_DATA) {
+ if(ob->type==OB_ARMATURE) {
+ /* this happens for reading old files and to match library armatures
+ with poses we do it ahead of where_is_object to ensure animation
+ is evaluated on the rebuilt pose, otherwise we get incorrect poses
+ on file load */
+ if(ob->pose==NULL || (ob->pose->flag & POSE_RECALC))
+ armature_rebuild_pose(ob, ob->data);
+ }
+ }
+
/* XXX new animsys warning: depsgraph tag OB_RECALC_DATA should not skip drivers,
which is only in where_is_object now */
// XXX: should this case be OB_RECALC_OB instead?
@@ -2541,11 +2552,6 @@ void object_handle_update(Scene *scene, Object *ob)
lattice_calc_modifiers(scene, ob);
}
else if(ob->type==OB_ARMATURE) {
- /* this happens for reading old files and to match library armatures with poses */
- // XXX this won't screw up the pose set already...
- if(ob->pose==NULL || (ob->pose->flag & POSE_RECALC))
- armature_rebuild_pose(ob, ob->data);
-
/* evaluate drivers */
BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS);