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
23namespace worldmap {
24
25class Camera
26{
27public:
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
37private:
38 Vector get_camera_pos_for_tux() const;
39 void clamp_camera_position(Vector& c) const;
40
41private:
42 Vector m_camera_offset;
43
44 /** variables to track panning to a spawn point */
45 Vector m_pan_pos;
46 bool m_panning;
47
48private:
49 Camera(const Camera&) = delete;
50 Camera& operator=(const Camera&) = delete;
51};
52
53} // namespace worldmap
54
55#endif
56
57/* EOF */
58