00001
00002
00009
00010
#include "ctrl_particule.h"
00011
#include "fx_fumee.h"
00012
00013 CFumee::CFumee (
CTexture *pTexture)
00014 {
00015
m_pTexture = pTexture;
00016 }
00017
00018 CFumee::~CFumee ()
00019 {
00020
00021 }
00022
00023 CFumee*
CFumee::Create (
CEntite *pProprietaire,
float fTailleParticule,
float fPosition,
float fVitesse,
float fDureeVie,
CCouleur Couleur)
00024 {
00025
00026
CFumee* pGenerateurParticule =
CParticleManager::Instance ()->
CreateFumee ();
00027
if (pGenerateurParticule == 0)
00028
return 0;
00029
00030 pGenerateurParticule->
m_pProprietaire = pProprietaire;
00031 pGenerateurParticule->
m_fTailleParticule = fTailleParticule;
00032 pGenerateurParticule->
m_fPosition = fPosition;
00033 pGenerateurParticule->
m_fVitesse = fVitesse;
00034 pGenerateurParticule->
m_fPrecision = 0.0f;
00035 pGenerateurParticule->
m_fDureeVie = fDureeVie;
00036 pGenerateurParticule->
m_Couleur = Couleur;
00037
00038
return pGenerateurParticule;
00039 }
00040
00041
00042 void CFumee::Init ()
00043 {
00044
00045 }
00046
00047
00048 void CFumee::Update ()
00049 {
00050
for (
int i = 0; i <
PARTICULE_NOMBRE; i++)
00051 {
00052
if (m_pParticule[i])
00053 {
00054
00055
if (m_pParticule[i]->
GetFinVie () || !
EstDansEcran (m_pParticule[i]->GetPosition (), m_fTailleParticule))
00056 {
00057
delete m_pParticule[i];
00058 m_pParticule[i] = 0;
00059
continue;
00060 }
00061 }
00062 }
00063
00064
00065
00066
if (m_pProprietaire)
00067 {
00068
00069
if (m_Timer.
GetTime () > 0.01f)
00070 {
00071 m_Timer.
Init ();
00072
00073
int iIndex =
GetIndexLibre ();
00074
if (iIndex != -1)
00075 m_pParticule[iIndex] =
new CParticule (m_pProprietaire->
GetPosition () +
CVecteur (0, m_fPosition),
CVecteur (
RandFloat (- m_fPrecision * m_fVitesse, m_fPrecision * m_fVitesse), m_fVitesse),
CVecteur (0, 0), m_fDureeVie, m_pProprietaire->
GetBouclier () / 200.f + 0.5f);
00076 }
00077 }
00078 }
00079
00080 void CFumee::Supprimer ()
00081 {
00082 m_pProprietaire = 0;
00083 m_bSupprime =
true;
00084 }