diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-01-27 20:45:00 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-01-27 20:45:00 +0400 |
commit | 6cadd2bee34fb276805086a7d82e2f0f7be7138d (patch) | |
tree | 2e6c58daaa386af7fa47a4293eba8f994a9d6704 /source/blender/makesrna/intern/rna_scene_api.c | |
parent | 431619e45b75bbe4c9476dd944168fb8bea2e3ca (diff) |
Fix drivers and shape keys not handling subframes / frame mapping properly.
Change Scene.frame_set so that it ensures subframe in range [0,1[ as Blender
expects, otherwise some things like physics point cache lookups don't get
evaluated properly.
Diffstat (limited to 'source/blender/makesrna/intern/rna_scene_api.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_scene_api.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/source/blender/makesrna/intern/rna_scene_api.c b/source/blender/makesrna/intern/rna_scene_api.c index e877367790e..b0df27b957b 100644 --- a/source/blender/makesrna/intern/rna_scene_api.c +++ b/source/blender/makesrna/intern/rna_scene_api.c @@ -55,8 +55,10 @@ static void rna_Scene_frame_set(Scene *scene, int frame, float subframe) { - scene->r.cfra = frame; - scene->r.subframe = subframe; + float cfra = (float)frame + subframe; + + scene->r.cfra = floorf(cfra); + scene->r.subframe = cfra - floorf(cfra); CLAMP(scene->r.cfra, MINAFRAME, MAXFRAME); BKE_scene_update_for_newframe(G.main, scene, (1 << 20) - 1); |