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

#include "Actors/CSceneNode.h"
#include "Actors/CCubeNode.h"
#include "Actors/CCameraNode.h"
#include "Actors/CMD2MeshNode.h"
#include "Actors/CBinaryMeshNode.h"
#include "Actors/CSkydomeNode.h"
#include <list>

#ifndef _H_L3DSCENEMANAGER
#define _H_L3DSCENEMANAGER

namespace L3D
{
	// - - - - - - - - -
	// Classe CSceneManager - gère les différents noeuds de la scène
	// - - - - - - - - - 
	class CSceneManager
	{
	public:
		//Constructeur/detructeur
		CSceneManager();
		~CSceneManager();
		//Ajout/Retrait de noeuds de la scene
		void Push(CSceneNode* node);
		void Pop(CSceneNode* nod);
		void Clear();
		//Gestion de la caméra
		void SetupCamera();
		//Affichage des noeuds
		void Draw();
		void Update();

	public:
		//Noeuds
		std::list<CSceneNode*> mNodes;						//Liste de noeuds de la scene
		std::list<CSceneNode*>::iterator mNodesItor;		//Itérateur sur la liste de noeuds
		unsigned int mNodeCount;							//Nombre d'objets de la scene

		//Camera - TODO : Gestion de plusieurs cameras (interpolation ? activité ?)
		CCameraNode* mCam;
	};
};

#endif