1 /*
2  Copyright (C) 2010-2014 Kristian Duske
3 
4  This file is part of TrenchBroom.
5 
6  TrenchBroom is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  TrenchBroom is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with TrenchBroom. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef TrenchBroom_CameraAnimation
21 #define TrenchBroom_CameraAnimation
22 
23 #include "VecMath.h"
24 #include "View/Animation.h"
25 
26 namespace TrenchBroom {
27     namespace Renderer {
28         class Camera;
29     }
30 
31     namespace View {
32         class CameraAnimation : public Animation {
33         private:
34             static const Type AnimationType;
35 
36             Renderer::Camera& m_camera;
37 
38             const Vec3f m_startPosition;
39             const Vec3f m_startDirection;
40             const Vec3f m_startUp;
41             const Vec3f m_targetPosition;
42             const Vec3f m_targetDirection;
43             const Vec3f m_targetUp;
44         public:
45             CameraAnimation(Renderer::Camera& camera, const Vec3f& targetPosition, const Vec3f& targetDirection, const Vec3f& targetUp, wxLongLong duration);
46         private:
47             void doUpdate(double progress);
48         };
49     }
50 }
51 
52 #endif /* defined(TrenchBroom_CameraAnimation) */
53