#include <Ogre.h>
#include <OIS/OIS.h>
#include <OgreConfigFile.h>
#include <OgreException.h>

using namespace Ogre;

class ExtendedCamera {

	public:
		
		ExtendedCamera ( String name, SceneManager * sceneMgr, Camera * camera );
		~ExtendedCamera();

		// Metodi:

		void setTightness(Real tightness);
		Real getTightness();
		Vector3	getCameraPosition();
		void instantUpdate( Vector3 cameraPosition, Vector3 targetPosition );
		bool update( Real elapsedTime, Vector3 cameraPosition, Vector3 targetPosition );


	protected:

		// Variabili:

		SceneNode *		m_TargetNode; // nodo che la camera deve seguire
		SceneNode *		m_cameraNode; // nodo della camera
		Camera *		mCamera; // Camera
		Camera *		m_camera;
		SceneManager *	m_sceneMgr;
		String			m_name;
		bool			mOwnCamera; // Per sapere se la camera e stata creata dentro o fuori la classe
		Real			m_tightness; // rigidita della camera, 1 rigida, 0 nessun movimento, default 0.01
	
};