/* client/camera.h This file is part of the Osirion project and is distributed under the terms and conditions of the GNU General Public License version 2 */ #ifndef __INCLUDED_CAMERA_H__ #define __INCLUDED_CAMERA_H__ #include "gl/osiriongl.h" namespace client { /// camera functions /** The functions in this namespace performs the transformations for the camera eye location. The camera always looks at (0,0,0) */ class Camera { public: /// enum indicating the camera mode enum Mode {Free, Track}; /// draw the OpenGL camera transformation static void draw(float elapsed); /// rotate the camera left static void rotate_left(); /// rotate the camera right static void rotate_right(); /// rotate the camera up static void rotate_up(); /// rotate the camera down static void rotate_down(); /// switch to next camera mode static void nextmode(); /// camera target /** The location the camera is looking at */ static gl::Vector3f target; /// target yaw, angle in XZ plane, positive is looking left static float yaw_target; /// target pitch, angle in XZ plane, positive is looking left static float pitch_target; /// distance from the camera to the target static float distance; protected: /// default tracking pitch static const float track_pitch; /// default offset increment static const float offset_inc; /// current yaw, angle in XZ plane, positive is looking left static float yaw; /// current pitch, angle in XY, positive is looking up static float pitch; static Mode mode; }; } // namespace client #endif // __INCLUDED_CAMERA_H__