supertux
camera.hpp
1 // SuperTux
2 // Copyright (C) 2018 Ingo Ruhnke <grumbel@gmail.com>
3 // 2006 Christoph Sommer <christoph.sommer@2006.expires.deltadevelopment.de>
4 //
5 // This program is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program. If not, see <http://www.gnu.org/licenses/>.
17 
18 #ifndef HEADER_SUPERTUX_WORLDMAP_CAMERA_HPP
19 #define HEADER_SUPERTUX_WORLDMAP_CAMERA_HPP
20 
21 #include "math/vector.hpp"
22 
23 namespace worldmap {
24 
25 class Camera
26 {
27 public:
28  Camera();
29 
30  void update(float dt_sec);
31 
32  void pan();
33  bool is_panning() const { return m_panning; }
34 
35  Vector get_offset() const { return m_camera_offset; }
36 
37 private:
38  Vector get_camera_pos_for_tux() const;
39  void clamp_camera_position(Vector& c) const;
40 
41 private:
42  Vector m_camera_offset;
43 
45  Vector m_pan_pos;
46  bool m_panning;
47 
48 private:
49  Camera(const Camera&) = delete;
50  Camera& operator=(const Camera&) = delete;
51 };
52 
53 } // namespace worldmap
54 
55 #endif
56 
57 /* EOF */
Simple two dimensional vector.
Definition: vector.hpp:24
Definition: camera.hpp:25
Definition: object_settings.hpp:28