Pyrogenesis  13997
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
CParticleEmitterType Class Reference

Particle emitter type - stores the common state data for all emitters of that type, and uses that data to update the emitter states. More...

#include <ParticleEmitterType.h>

Public Member Functions

 CParticleEmitterType (const VfsPath &path, CParticleManager &manager)
 

Private Types

enum  {
  VAR_EMISSIONRATE, VAR_LIFETIME, VAR_POSITION_X, VAR_POSITION_Y,
  VAR_POSITION_Z, VAR_ANGLE, VAR_VELOCITY_X, VAR_VELOCITY_Y,
  VAR_VELOCITY_Z, VAR_VELOCITY_ANGLE, VAR_SIZE, VAR_COLOR_R,
  VAR_COLOR_G, VAR_COLOR_B, VAR__MAX
}
 
typedef shared_ptr< IParticleVarIParticleVarPtr
 
typedef shared_ptr
< IParticleEffector
IParticleEffectorPtr
 

Private Member Functions

 NONCOPYABLE (CParticleEmitterType)
 
int GetVariableID (const std::string &name)
 
bool LoadXML (const VfsPath &path)
 
void UpdateEmitter (CParticleEmitter &emitter, float dt)
 Update the state of an emitter's particles, by a potentially long time dt. More...
 
void UpdateEmitterStep (CParticleEmitter &emitter, float dt)
 Update the state of an emitter's particles, by a short time dt that can be computed in a single step. More...
 
CBoundingBoxAligned CalculateBounds (CVector3D emitterPos, CBoundingBoxAligned emittedBounds)
 

Private Attributes

CTexturePtr m_Texture
 
GLenum m_BlendEquation
 
GLenum m_BlendFuncSrc
 
GLenum m_BlendFuncDst
 
bool m_StartFull
 
float m_MaxLifetime
 
size_t m_MaxParticles
 
CBoundingBoxAligned m_MaxBounds
 
std::vector< IParticleVarPtrm_Variables
 
std::vector< IParticleEffectorPtrm_Effectors
 
CParticleManagerm_Manager
 

Friends

class CModelParticleEmitter
 
class CParticleEmitter
 
class CParticleVarConstant
 
class CParticleVarUniform
 
class CParticleVarCopy
 
class ParticleRenderer
 

Detailed Description

Particle emitter type - stores the common state data for all emitters of that type, and uses that data to update the emitter states.

The data is initialised from XML files.

Most of the emitter type data is represented as subclasses of IParticleVar, which will typically return a constant value or a random value each time it's evaluated. New subclasses can be added to support different random distributions, etc.

Definition at line 43 of file ParticleEmitterType.h.

Member Typedef Documentation

Definition at line 107 of file ParticleEmitterType.h.

Definition at line 104 of file ParticleEmitterType.h.

Member Enumeration Documentation

anonymous enum
private
Enumerator
VAR_EMISSIONRATE 
VAR_LIFETIME 
VAR_POSITION_X 
VAR_POSITION_Y 
VAR_POSITION_Z 
VAR_ANGLE 
VAR_VELOCITY_X 
VAR_VELOCITY_Y 
VAR_VELOCITY_Z 
VAR_VELOCITY_ANGLE 
VAR_SIZE 
VAR_COLOR_R 
VAR_COLOR_G 
VAR_COLOR_B 
VAR__MAX 

Definition at line 57 of file ParticleEmitterType.h.

Constructor & Destructor Documentation

CParticleEmitterType::CParticleEmitterType ( const VfsPath path,
CParticleManager manager 
)

Definition at line 256 of file ParticleEmitterType.cpp.

Member Function Documentation

CBoundingBoxAligned CParticleEmitterType::CalculateBounds ( CVector3D  emitterPos,
CBoundingBoxAligned  emittedBounds 
)
private

Definition at line 582 of file ParticleEmitterType.cpp.

int CParticleEmitterType::GetVariableID ( const std::string &  name)
private

Definition at line 315 of file ParticleEmitterType.cpp.

bool CParticleEmitterType::LoadXML ( const VfsPath path)
private

Definition at line 335 of file ParticleEmitterType.cpp.

CParticleEmitterType::NONCOPYABLE ( CParticleEmitterType  )
private
void CParticleEmitterType::UpdateEmitter ( CParticleEmitter emitter,
float  dt 
)
private

Update the state of an emitter's particles, by a potentially long time dt.

Definition at line 485 of file ParticleEmitterType.cpp.

void CParticleEmitterType::UpdateEmitterStep ( CParticleEmitter emitter,
float  dt 
)
private

Update the state of an emitter's particles, by a short time dt that can be computed in a single step.

Definition at line 506 of file ParticleEmitterType.cpp.

Friends And Related Function Documentation

friend class CModelParticleEmitter
friend

Definition at line 50 of file ParticleEmitterType.h.

friend class CParticleEmitter
friend

Definition at line 51 of file ParticleEmitterType.h.

friend class CParticleVarConstant
friend

Definition at line 52 of file ParticleEmitterType.h.

friend class CParticleVarCopy
friend

Definition at line 54 of file ParticleEmitterType.h.

friend class CParticleVarUniform
friend

Definition at line 53 of file ParticleEmitterType.h.

friend class ParticleRenderer
friend

Definition at line 55 of file ParticleEmitterType.h.

Member Data Documentation

GLenum CParticleEmitterType::m_BlendEquation
private

Definition at line 95 of file ParticleEmitterType.h.

GLenum CParticleEmitterType::m_BlendFuncDst
private

Definition at line 97 of file ParticleEmitterType.h.

GLenum CParticleEmitterType::m_BlendFuncSrc
private

Definition at line 96 of file ParticleEmitterType.h.

std::vector<IParticleEffectorPtr> CParticleEmitterType::m_Effectors
private

Definition at line 108 of file ParticleEmitterType.h.

CParticleManager& CParticleEmitterType::m_Manager
private

Definition at line 110 of file ParticleEmitterType.h.

CBoundingBoxAligned CParticleEmitterType::m_MaxBounds
private

Definition at line 102 of file ParticleEmitterType.h.

float CParticleEmitterType::m_MaxLifetime
private

Definition at line 100 of file ParticleEmitterType.h.

size_t CParticleEmitterType::m_MaxParticles
private

Definition at line 101 of file ParticleEmitterType.h.

bool CParticleEmitterType::m_StartFull
private

Definition at line 98 of file ParticleEmitterType.h.

CTexturePtr CParticleEmitterType::m_Texture
private

Definition at line 93 of file ParticleEmitterType.h.

std::vector<IParticleVarPtr> CParticleEmitterType::m_Variables
private

Definition at line 105 of file ParticleEmitterType.h.


The documentation for this class was generated from the following files: