#ifndef CCAMERA
#define CCAMERA 1

#define ROTATE 1
#define ZOOM 2
#include <gl/glut.h>
#include <vcg/Point3.h>

using namespace vcg;

//===========================================================================================
//Camera per la vista OpenGL<br>
//basata sul tutorial <a href="http://www.gametutorials.com/Tutorials/OpenGL/OpenGL_Pg1.htm">
//http://www.gametutorials.com/Tutorials/OpenGL/OpenGL_Pg1.htm </a>*/
//===========================================================================================
class CCamera {

public:
    //=========================
    //la posizione della camera
    //=========================
    Point3<float> m_vPosition;  

    //===========================
    //punto di vista della camera
    //===========================
    Point3<float> m_vView;          
    
    //===========================
    //vettore Up della camera
    //===========================
    Point3<float> m_vUpVector;      
    
    //===========================
    //centro di rotazione
    //===========================
    Point3<float> m_vcentrorotazione;                          
    
    /**Costruttore*/
    CCamera();  

    /** Position camera permette di cambiare Posizione, punto di vista e vettore up*/
    void PositionCamera(float positionX, float positionY, float positionZ,
                        float viewX,     float viewY,     float viewZ,
                        float upVectorX, float upVectorY, float upVectorZ);



    void RotateView(float angle, float x, float y, float z);
    void RotateAroundPoint(Point3<float> vCenter, float angle, float x, float y, float z);
    void MoveCamera(float speed);
    void Draw();

};
#endif