/* Stockage d'une lumiere directionnelle        */
/*                                              */
/* Auteur: Nicolas JANEY                        */
/* nicolas.janey@univ-fcomte.fr                 */
/* Mars 2014                                    */

#ifndef ____LUMIEREDIRECTIONNELLE____
#define ____LUMIEREDIRECTIONNELLE____

#include "Lumiere.h"

class Pos3D;
class Dir3D;
class Scene;
class TG3D;

class LumiereDirectionnelle:public Lumiere {

  public :
    Dir3D *d;

  public :

    /* Constructeurs                            */
    LumiereDirectionnelle(void);
    LumiereDirectionnelle(Dir3D *direction,double energie,Couleur *couleur);
    LumiereDirectionnelle(LumiereDirectionnelle *ld);

    /* Destructeur                              */
    virtual ~LumiereDirectionnelle(void);

//////////////////////////////////////////////////

    /* Methode de calcul de la quantite         */
    /* d'energie diffusee en un point p         */
    /* de normale n et de coefficient           */
    /* de diffusion kd                          */
    virtual void energieDiffusee(Energie *e,Pos3D *p,Dir3D *n,Couleur *kd);

//////////////////////////////////////////////////

    virtual int eclaire(Pos3D *p,Scene *scn,double d);

    /* Methode d'affichage texte                */
    virtual void print(void);

    virtual double distance(Pos3D *p);
    virtual void transforme(TG3D *m);
    virtual void modeliseOpenGL(int num);

    virtual LumiereDirectionnelle *clone(void);
};

#endif
