/* ZParticleGenerator.h Author: James Russell Purpose: The particle generator is responsible for generating / allocating the particle data and storing it for the duration the particle emitter is alive. Also responsible for cleanup. Changelog 2011/08/28 - creation (jcrussell) */ #pragma once #ifndef _ZPARTICLESTORAGEALLOCATOR_H #define _ZPARTICLESTORAGEALLOCATOR_H #include //Forward Declaration class ZParticleEffect; class ZParticleEmitter; class ZParticleStorageAllocator { public: //Virtual Destructor virtual ~ZParticleStorageAllocator() { } /* virtual public ZParticleGenerator::AllocateParticleStorage Allocates particle storage for this particle emitter. @param _emitter - the emitter we are creating storage for @param _maxParticles - the number of particles we allocate storage for @return (void) @context (all) */ virtual void AllocateParticleStorage(ZParticleEmitter* _emitter, size_t _maxParticles) = 0; /* virtual public ZParticleGenerator::DeallocateParticleStorage Deallocates storage previously allocated with AllocateParticleStorage. @return (void) @context (all) */ virtual void DeallocateParticleStorage() = 0; /* virtual public ZParticleStorageAllocator::GetParticleFormat Returns a string 'type' indicating the type of particle storage used by this allocator. Checked against the other strategies to ensure compatibility. @return (ZString) @context (all) */ virtual ZString GetParticleFormat() = 0; /* virtual public ZParticleStorageAllocator::Update Updates the storage allocator, indicating another frame has passed. @param _effect - the particle effect @param _emitter - the particle emitter @param _dt - amount of time passed (in ms) @return (void) @context (all) */ virtual void Update(ZParticleEffect *_effect, ZParticleEmitter *_emitter, size_t _dt ) = 0; }; #endif