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:
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