/* 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_CLIENT_CAMERA_H__ #define __INCLUDED_CLIENT_CAMERA_H__ #include "render/render.h" namespace client { /// camera functions /** The functions in the camera namespace perform the transformations * for the camera eye location. The camera always looks at (0,0,0) */ namespace camera { /// enum indicating the camera mode enum Mode {Free, Track, Overview}; /// initialize the camera extern void init(); /// shutdown the camera extern void shutdown(); /// draw the OpenGL camera transformation extern void draw(float elapsed); /// rotate the camera left extern void rotate_left(); /// rotate the camera right extern void rotate_right(); /// rotate the camera up extern void rotate_up(); /// rotate the camera down extern void rotate_down(); /// switch to next camera mode extern void nextmode(); /// camera target /** The location the camera is looking at */ extern math::Vector3f target; /// target yaw, angle in XZ plane, positive is looking left extern float yaw_target; /// target pitch, angle in XZ plane, positive is looking left extern float pitch_target; /// distance from the camera to the target extern float distance; /// current camera mode extern Mode mode; } // namespace camera } // namespace client #endif // __INCLUDED_CLIENT_CAMERA_H__