
#ifndef TBILLFIRE_H_INCLUDED
#define TBILLFIRE_H_INCLUDED

/*
OBJET       classe d'un plan 3d avec texture animée (simili billboard)

DATE        10/2024

AUTEUR      philippe Thebaud

COMMENTAIRE
*/

#include <GL/glew.h>
#include <string>

#include "../ECO/OUtils.h"
#include "../ECO/OTexturelist.h"
#include "../ECO/defered/ODshGeo.h"
#include "../ECO/shader/OShLight.h"


class Tbillfire
{
public:

	Tbillfire();
	~Tbillfire();

	void		create();

	// il n'y a pas de gestion de la transparence, l'image est découpée autour de la flamme
	void        draw(ODshGeo& dshGeo, OVec3_f& camDir);
	// l'aspect est meilleur, avec un fondu (on aurait pu utiliser OShImage3d)
	void        draw(OShLight& shLight, OVec3_f& camDir);

	void        generate(OVec3_f& pos, int nbr = 1);

	void        update();

private:

	void		_setModel();

private:

    s_texParam  m_texParam;
    ORect_i     m_src;

    // idem pour tous
    OVec3_f     m_vertex[4];
    OVec3_f     m_normal[4];
    OVec2_f     m_uv[23][4];

	struct s_plane
	{
	    OVec3_f		pos;
        int         frame, nbr_frame, cpt, cpt_delay;
	};
	std::vector<s_plane> plane;

};

#endif
