//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  This file contains the declaration of the CCamera class.            //
//                                                                      //
//////////////////////////////////////////////////////////////////////////
#ifndef __CCAMERA_HPP__
#define __CCAMERA_HPP__


#include "real.hpp"
#include "CVector.hpp"


// This class represents a camera.  It helps handling camera
// manipulation
class CCamera
{
public:
  CCamera();
  void Rotate(real_t angle, const CVector& axis);
  void HorizontalRotate(real_t delta);
  void VerticalRotate(real_t delta);
  void Move(real_t delta);
  void CamLookAt();

  CVector m_position;
  CVector m_target;
  CVector m_up;
  real_t  m_moveSpeed;
  real_t  m_rotateSpeed;
};


#endif // __CCAMERA_HPP__
