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:
authorSergey Sharybin <sergey.vfx@gmail.com>2013-10-17 18:10:03 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2013-10-17 18:10:03 +0400
commiteb1b4c3b55e212dbcb7fb2390c90adf204f42959 (patch)
tree12a079dd5352ef86749c6119c0c3a68c16723a89 /source/blender/blenkernel/intern/scene.c
parentabee8a871718a99708100c0ad591b76d8f5767da (diff)
Fix #37097: Setting scene frame does not update active camera
The issue was caused by uncertainty of current camera when there're no markers to the left of current frame. Now in this case camera from the top-left marker will be used.
Diffstat (limited to 'source/blender/blenkernel/intern/scene.c')
-rw-r--r--source/blender/blenkernel/intern/scene.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 41e43c00457..23b26d0e629 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -874,18 +874,35 @@ Object *BKE_scene_camera_switch_find(Scene *scene)
TimeMarker *m;
int cfra = scene->r.cfra;
int frame = -(MAXFRAME + 1);
+ int min_frame = MAXFRAME + 1;
Object *camera = NULL;
+ Object *first_camera;
for (m = scene->markers.first; m; m = m->next) {
- if (m->camera && (m->camera->restrictflag & OB_RESTRICT_RENDER) == 0 && (m->frame <= cfra) && (m->frame > frame)) {
- camera = m->camera;
- frame = m->frame;
+ if (m->camera && (m->camera->restrictflag & OB_RESTRICT_RENDER) == 0) {
+ if ((m->frame <= cfra) && (m->frame > frame)) {
+ camera = m->camera;
+ frame = m->frame;
- if (frame == cfra)
- break;
+ if (frame == cfra)
+ break;
+ }
+ if (m->frame < min_frame) {
+ first_camera = m->camera;
+ min_frame = m->frame;
+ }
}
}
+
+ if (camera == NULL) {
+ /* If there's no marker to the left of current frame,
+ * use camera from left-most marker to solve all sort
+ * of Schrodinger uncertainties.
+ */
+ return first_camera;
+ }
+
return camera;
}
#endif