]> git.tdb.fi Git - libs/demoscene.git/blob - source/cameracontrol.cpp
Initial files lifted from the Skrolliparty 2 demo
[libs/demoscene.git] / source / cameracontrol.cpp
1 #include "cameracontrol.h"
2
3 using namespace Msp;
4
5 void CameraControl::set_camera(const GL::Camera &c)
6 {
7         camera.set_object_matrix(c.get_object_matrix());
8         camera.set_up_direction(c.get_up_direction());
9         camera.set_field_of_view(c.get_field_of_view());
10         camera.set_depth_clip(c.get_near_clip(), c.get_far_clip());
11 }
12
13 void CameraControl::animate_camera(const GL::Animation &anim, float speed)
14 {
15         anim_player.play(camera, anim, speed);
16 }
17
18 void CameraControl::tick(float, float d)
19 {
20         anim_player.tick(d*Time::sec);
21 }
22
23
24 CameraControl::SetCamera::SetCamera(CameraControl &cc, const GL::Camera &c):
25         control(cc),
26         camera(c)
27 { }
28
29 void CameraControl::SetCamera::start(float, float)
30 {
31         control.set_camera(camera);
32 }
33
34
35 CameraControl::AnimateCamera::AnimateCamera(CameraControl &cc, const GL::Animation &a):
36         control(cc),
37         anim(a)
38 { }
39
40 void CameraControl::AnimateCamera::start(float, float d)
41 {
42         control.animate_camera(anim, (d ? (anim.get_duration()/Time::sec)/d : 1.0f));
43 }