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:
authorCampbell Barton <ideasman42@gmail.com>2009-12-16 22:49:33 +0300
committerCampbell Barton <ideasman42@gmail.com>2009-12-16 22:49:33 +0300
commitc3401eb5cb0833dc76eff1e90e573b487181ec81 (patch)
treece0ab6907d724650abff8f4ee2d80c96c8e4169f /source/blender/blenkernel/intern/scene.c
parent5e48ab8d75bd5ce3085a9de183f36107f6d5d616 (diff)
camera switching via markers
Currently access by selecting a marking and binding with the active camera from the view menu. Note: after long discussion we decieded there is no nice way to do this.. animate pointers? animate multiple camera visibility?, use sequencer? use NLA?.... have a kind of event system (like framechange scriptlinks)... etc so this is ifdef'd with DURIAN_CAMERA_SWITCH
Diffstat (limited to 'source/blender/blenkernel/intern/scene.c')
-rw-r--r--source/blender/blenkernel/intern/scene.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 4312f23bd9b..7bfeac037ce 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -698,6 +698,47 @@ Object *scene_find_camera(Scene *sc)
return NULL;
}
+#ifdef DURIAN_CAMERA_SWITCH
+Object *scene_find_camera_switch(Scene *scene)
+{
+ TimeMarker *m;
+ int cfra = scene->r.cfra;
+ int frame = -(MAXFRAME + 1);
+ Object *camera= NULL;
+
+ for (m= scene->markers.first; m; m= m->next) {
+ if(m->camera && (m->frame <= cfra) && (m->frame > frame)) {
+ camera= m->camera;
+ frame= m->frame;
+
+ if(frame == cfra)
+ break;
+
+ }
+ }
+ return camera;
+}
+#endif
+
+static char *get_cfra_marker_name(Scene *scene)
+{
+ ListBase *markers= &scene->markers;
+ TimeMarker *m1, *m2;
+
+ /* search through markers for match */
+ for (m1=markers->first, m2=markers->last; m1 && m2; m1=m1->next, m2=m2->prev) {
+ if (m1->frame==CFRA)
+ return m1->name;
+
+ if (m1 == m2)
+ break;
+
+ if (m2->frame==CFRA)
+ return m2->name;
+ }
+
+ return NULL;
+}
Base *scene_add_base(Scene *sce, Object *ob)
{