#ifndef _CAMERA_H #define _CAMERA_H #include #include "eliteutils.h" /* ---------------------------------------------------------- Classe che implementa una telecamera in moviento. Lo stato della telecamera e' dato dala sua posizione dal versore up e dal versore della direzione di vista. La classe consente di gestire il movimento della tc aggiornando lo stato e chiamando la glLookAt con i parametri opportuni. ------------------------------------------------------------- */ class Camera { public: static const GLfloat MAXSPEED=0.001; /* costruttore */ Camera(GLfloat x, GLfloat y, GLfloat z); /* cambia angolo di roll */ void roll(GLfloat angle) ; /* cambia angolo di pitch */ void pitch(GLfloat angle) ; /* aggiorna velocita' */ void accelerate(GLfloat step) ; /* avanza di uno step, nella direzione di view */ void step(GLfloat s) ; /* avanza in base alla velocita' (da chiamare in idle() ) */ void advance(GLfloat t) ; /* al posto della gluLookAt */ void look() ; /* restituisce la posizione */ Point3 getPos(); /* restituisce la direzione di vista */ Point3 getView(); /* restituisce la direzione a destra */ Point3 getRight(); /* restituisce la direzione alto */ Point3 getUp(); /* restituisce la velocita' */ GLfloat getSpeed(); private: Point3 eye; Point3 view; Point3 up; float velocity; }; #endif /* Credits: Ben Humphrey (DigiBen@GameTutorials.com) per la classe camera */