///
/// \file Scene.h
/// Stockage d'une scene
/// 
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///

#ifndef ____SCENE____
#define ____SCENE____

class ObjetGraphique;
class Lumiere;

///
/// \class Scene
/// Stockage d'une scene
/// 
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///

class Scene  {

  public :
    int no;                       ///< Nombre d'objets graphiques.
    ObjetGraphique **objets;      ///< Tableau des objets graphiques.
    int nl;                       ///< Nombre de lumieres.
    Lumiere **lumieres;           ///< Tableau des lumieres.

  public :

///
/// Constructeur basique.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///
    Scene(void);

///
/// Destructeur.
/// 
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///
    ~Scene(void);

///
/// Affichage texte.
/// 
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///
    void print(void);

///
/// Ajout d'une lumiere a la scene.
///
/// @param l La Lumiere a ajouter.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///
    int add(Lumiere *l);

///
/// Ajout d'un objet graphique a la scene.
///
/// @param o L'ObjetGraphique a ajouter.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///
    int add(ObjetGraphique *o);

///
/// Deletion de tous les objets de la scene.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///
    void deleteObjets(void);

///
/// Deletion de toutes les lumieres de la scene.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///
    void deleteLumieres(void);
};

#endif
