NL3D::CPSModulatedEmitter Class Reference

#include <ps_emitter.h>

Inheritance diagram for NL3D::CPSModulatedEmitter:

NL3D::CPSEmitterDirectionnal NL3D::CPSEmitterOmni NL3D::CPSEmitterRectangle NL3D::CPSSphericalEmitter NL3D::CPSEmitterConic NL3D::CPSRadialEmitter

Detailed Description

This class helps tuning the emission strenght. It modulate the speed of emitted particle by a coeeficient produced by an attribute maker

Definition at line 369 of file ps_emitter.h.

Public Member Functions

 CPSModulatedEmitter ()
 ctor : the default doesn't alter speed

float getEmitteeSpeed (void) const
 get the modulation speed (valid only if no scheme is used)

const CPSAttribMaker< float > * getEmitteeSpeedScheme (void) const
 get the speed modulation shceme, or NULL if no one is set (const version)

CPSAttribMaker< float > * getEmitteeSpeedScheme (void)
 get the speed modulation shceme, or NULL if no one is set

void serialEmitteeSpeedScheme (NLMISC::IStream &f) throw (NLMISC::EStream)
 serialization

void setEmitteeSpeed (float speed)
 set a constant speed modulation for emittee

void setEmitteeSpeedScheme (CPSAttribMaker< float > *scheme)
bool useEmitteeSpeedScheme (void) const
 check wether a speed modulation scheme is being used

virtual ~CPSModulatedEmitter ()
 dtor


Protected Member Functions

void deleteEmitteeSpeedElement (uint32 index)
virtual CPSLocatedgetModulatedEmitterOwner (void)=0
void newEmitteeSpeedElement (CPSLocated *emitter, uint32 emitterIndex)
void resizeEmitteeSpeed (uint32 capacity)

Protected Attributes

float _EmitteeSpeed
CPSAttribMaker< float > * _EmitteeSpeedScheme


Constructor & Destructor Documentation

NL3D::CPSModulatedEmitter::CPSModulatedEmitter  )  [inline]
 

ctor : the default doesn't alter speed

Definition at line 374 of file ps_emitter.h.

References _EmitteeSpeed, and _EmitteeSpeedScheme.

00374                                       : _EmitteeSpeed(1.f), _EmitteeSpeedScheme(NULL)
00375                 {
00376                 }

virtual NL3D::CPSModulatedEmitter::~CPSModulatedEmitter  )  [inline, virtual]
 

dtor

Definition at line 379 of file ps_emitter.h.

References _EmitteeSpeedScheme.

00380                 {
00381                         delete _EmitteeSpeedScheme;
00382                 }


Member Function Documentation

void NL3D::CPSModulatedEmitter::deleteEmitteeSpeedElement uint32  index  )  [inline, protected]
 

Definition at line 429 of file ps_emitter.h.

References _EmitteeSpeedScheme, NL3D::CPSAttribMaker< float >::deleteElement(), NL3D::CPSAttribMaker< float >::hasMemory(), index, and uint32.

Referenced by NL3D::CPSSphericalEmitter::deleteElement(), NL3D::CPSEmitterRectangle::deleteElement(), NL3D::CPSEmitterDirectionnal::deleteElement(), and NL3D::CPSEmitterOmni::deleteElement().

00430                 {
00431                         if (_EmitteeSpeedScheme && _EmitteeSpeedScheme->hasMemory()) _EmitteeSpeedScheme->deleteElement(index);
00432                 }

float NL3D::CPSModulatedEmitter::getEmitteeSpeed void   )  const [inline]
 

get the modulation speed (valid only if no scheme is used)

Definition at line 405 of file ps_emitter.h.

References _EmitteeSpeed.

00405 { return _EmitteeSpeed; }

const CPSAttribMaker<float>* NL3D::CPSModulatedEmitter::getEmitteeSpeedScheme void   )  const [inline]
 

get the speed modulation shceme, or NULL if no one is set (const version)

Definition at line 411 of file ps_emitter.h.

References _EmitteeSpeedScheme.

00411 { return _EmitteeSpeedScheme; }

CPSAttribMaker<float>* NL3D::CPSModulatedEmitter::getEmitteeSpeedScheme void   )  [inline]
 

get the speed modulation shceme, or NULL if no one is set

Definition at line 408 of file ps_emitter.h.

References _EmitteeSpeedScheme.

00408 { return _EmitteeSpeedScheme; }

virtual CPSLocated* NL3D::CPSModulatedEmitter::getModulatedEmitterOwner void   )  [protected, pure virtual]
 

Implemented in NL3D::CPSEmitterDirectionnal, NL3D::CPSEmitterOmni, NL3D::CPSEmitterRectangle, and NL3D::CPSSphericalEmitter.

Referenced by resizeEmitteeSpeed(), and setEmitteeSpeedScheme().

void NL3D::CPSModulatedEmitter::newEmitteeSpeedElement CPSLocated emitter,
uint32  emitterIndex
[inline, protected]
 

Definition at line 424 of file ps_emitter.h.

References _EmitteeSpeedScheme, NL3D::CPSAttribMaker< float >::hasMemory(), NL3D::CPSAttribMaker< float >::newElement(), and uint32.

Referenced by NL3D::CPSSphericalEmitter::newElement(), NL3D::CPSEmitterRectangle::newElement(), NL3D::CPSEmitterDirectionnal::newElement(), and NL3D::CPSEmitterOmni::newElement().

00425                 {
00426                         if (_EmitteeSpeedScheme && _EmitteeSpeedScheme->hasMemory()) _EmitteeSpeedScheme->newElement(emitter, emitterIndex);
00427                 }

void NL3D::CPSModulatedEmitter::resizeEmitteeSpeed uint32  capacity  )  [inline, protected]
 

Definition at line 434 of file ps_emitter.h.

References _EmitteeSpeedScheme, getModulatedEmitterOwner(), NL3D::CPSAttribMaker< float >::hasMemory(), NL3D::CPSAttribMaker< float >::resize(), and uint32.

Referenced by NL3D::CPSSphericalEmitter::resize(), NL3D::CPSEmitterRectangle::resize(), NL3D::CPSEmitterDirectionnal::resize(), and NL3D::CPSEmitterOmni::resize().

00435                 {
00436                         if (_EmitteeSpeedScheme && _EmitteeSpeedScheme->hasMemory()) _EmitteeSpeedScheme->resize(capacity, getModulatedEmitterOwner()->getSize());
00437                 }

void NL3D::CPSModulatedEmitter::serialEmitteeSpeedScheme NLMISC::IStream f  )  throw (NLMISC::EStream)
 

serialization

Definition at line 2180 of file ps_emitter.cpp.

02181 {
02182         bool useScheme;                 
02183         if (!f.isReading())
02184         {
02185                 useScheme = useEmitteeSpeedScheme();
02186         }
02187         f.serial(useScheme);
02188         if (useScheme)
02189         {
02190                 f.serialPolyPtr(_EmitteeSpeedScheme);
02191         }
02192         else
02193         {
02194                 f.serial(_EmitteeSpeed);
02195         }
02196 }

void NL3D::CPSModulatedEmitter::setEmitteeSpeed float  speed  )  [inline]
 

set a constant speed modulation for emittee

Definition at line 396 of file ps_emitter.h.

References _EmitteeSpeed, and _EmitteeSpeedScheme.

00397                 {
00398                         delete _EmitteeSpeedScheme;
00399                         _EmitteeSpeedScheme = NULL;
00400                         _EmitteeSpeed = speed;
00401                 
00402                 }

void NL3D::CPSModulatedEmitter::setEmitteeSpeedScheme CPSAttribMaker< float > *  scheme  )  [inline]
 

Set a new scheme for speed modulation. It must have been allocated with new, and will be destriyed by this object

Definition at line 387 of file ps_emitter.h.

References _EmitteeSpeedScheme, getModulatedEmitterOwner(), and NL3D::CPSAttribMaker< T >::resize().

00388                 {
00389                         delete _EmitteeSpeedScheme;
00390                         _EmitteeSpeedScheme = scheme;
00391                         if (getModulatedEmitterOwner() && scheme->hasMemory()) 
00392                                 scheme->resize(getModulatedEmitterOwner()->getMaxSize(), getModulatedEmitterOwner()->getSize());
00393                 }

bool NL3D::CPSModulatedEmitter::useEmitteeSpeedScheme void   )  const [inline]
 

check wether a speed modulation scheme is being used

Definition at line 414 of file ps_emitter.h.

References _EmitteeSpeedScheme.

00414 { return _EmitteeSpeedScheme != NULL; }


Field Documentation

float NL3D::CPSModulatedEmitter::_EmitteeSpeed [protected]
 

Definition at line 440 of file ps_emitter.h.

Referenced by CPSModulatedEmitter(), getEmitteeSpeed(), and setEmitteeSpeed().

CPSAttribMaker<float>* NL3D::CPSModulatedEmitter::_EmitteeSpeedScheme [protected]
 

Definition at line 441 of file ps_emitter.h.

Referenced by CPSModulatedEmitter(), deleteEmitteeSpeedElement(), getEmitteeSpeedScheme(), newEmitteeSpeedElement(), resizeEmitteeSpeed(), setEmitteeSpeed(), setEmitteeSpeedScheme(), useEmitteeSpeedScheme(), and ~CPSModulatedEmitter().


The documentation for this class was generated from the following files:
Generated on Tue Mar 16 07:18:34 2004 for NeL by doxygen 1.3.6