// Liquid3D - Moteur 3D C++ NDS par Morukutsu
// Surcouche de l'ulibrary de Brunni
// Version alpha 1

#include "../L3DTypes.h"
#include "CSceneNode.h"
#include <ulib/ulib.h>

#ifndef _H_L3DSCAMNODE
#define _H_L3DSCAMNODE

#define CAMTYPE_STATIC			0
#define CAMTYPE_FREEFLY			1

namespace L3D
{
	// - - - - - - - - -
	// Classe CCameraNode - noeud de type camera
	// - - - - - - - - - 
	class CCameraNode : public CSceneNode
	{
	public:
		//Constructeur/Destructeur
		CCameraNode(int camtype);
		~CCameraNode();
		//Fonction d'affichage
		void Draw();
		void Update();
		//Fonctions spécifiques à la camera
		void Set(v3d pos, v3d lookat, v3d upv);
		void SetLookAt(v3d vec);
		void SetUpVector(v3d vec);
		void ApplyCamera();
		void ToggleDebugDraw();
		void SetFreeFlyParameters(int32 speed, int32 sensibility);
		
	public:
		v3d mLookAt, mUpVec;		//Point regardé par la caméra et "angle" de la caméra
		bool mDebugDraw;			//Affiche un cube à la place d'une camera pour le debug
		int32 m_r;					//Taille du cube de debug
		int mCamType;				//Type de camera

		int32 mFreeFlySpeed, mFreeFlySensibility;
		v3d mLeft, mFoward;
		int32 mTheta, mPhi;
	};
};

#endif