timeToLive = particleSystem-> getEmitter(0) -> getDuration () + particleSystem-> getEmitter
(0) -> getTimeToLive ();.} Void ParticleSystemEffect :: Shutdown ( ) {sceneNode-> detachObject (particleSystem); GAMELEVEL.GetSceneManager () -> destroyParticleSystem (particleSystem); GAMELEVEL.
GetPlayerSceneNode () -> removeAndDestroyChild (sceneNode-> getName ()); InitialiseVariables (); PersistentFrameListener :: Shutdown ();} void ParticleSystemEffect :: InitialiseVariables () {timeToLive = 0; sceneNode = NULL; particleSystem = NULL;.}
FrameStarted funksjonen vil telle ned timeToLive variabel, og når den når null Shutdown funksjonen kalles, fjerne partikkelsystem fra nivået
bool ParticleSystemEffect :: FrameStarted (konst FrameEvent & evt) {timeToLive - = evt.timeSinceLastFrame; if (timeToLive
Akkurat som fiender, våpen og andre gjenstander som reagerer på Ogre ramme hendelser, ParticleSystemEffect objektene finnes i et basseng, med de som er ferdig med å være i en suspendert tilstand før de brukes på nytt. Den ParticleSystemEffectManager klassen opprettholder dette bassenget av ParticleSystemEffect stedene. Koden for å skape ParticleSystemEffect objekter, lagre dem i et basseng og returnere ubrukte gjenstander er den samme som den tilsvarende koden i WeaponDatabase og EnemyDatabase klasser.
Faktisk ParticleSystemEffectManager klassen gjør ingenting, men opprettholde denne pool av ParticleSystemEffect stedene.
ParticleSystemEffectManager.h
/* * ParticleSystemEffectManager.h * * Forfatter: Matthew Casperson * E-post: [email protected] * Nettside: https://www.brighthub.com/hubfolio/matthew -casperson.aspx * /# ifndef PARTICLESYSTEMEFFECTMANAGER_H_ # definere PARTICLESYSTEMEFFECTMANAGER_H_ # include "ParticleSystemEffect.h" #include "list" typedef std :: liste ParticleSystemEffectList; #define PARTICLESYSTEMEFFECTMANAGER ParticleSystemEffectManager :: Instance () klasse ParticleSystemEffectManager {public: ~ ParticleSystemEffectManager (); statisk ParticleSystemEffectManager & Instance () {statisk ParticleSystemEffectManager eksempel; returnere eksempel; } Void Startup (); void Shutdown (); ParticleSystemEffect * GetParticleSystemEffect (); beskyttet: ParticleSystemEffectManager (); ParticleSystemEffect * CreateParticleSystemEffect (); ParticleSystemEffectList particleSyste