NL3D::CParticleSystemProcess Class Reference

#include <particle_system_process.h>

Inheritance diagram for NL3D::CParticleSystemProcess:

NLMISC::IStreamable NLMISC::IClassable NL3D::CPSLocated

Detailed Description

A system particle process; A process is anything that can be called at each update of the system

Definition at line 74 of file particle_system_process.h.

Public Member Functions

virtual bool computeBBox (NLMISC::CAABBox &aabbox) const=0
virtual void enumTexs (std::vector< NLMISC::CSmartPtr< ITexture > > &dest, IDriver &drv)=0
virtual std::string getClassName ()=0
TPSMatrixMode getMatrixMode () const
const CParticleSystemgetOwner (void) const
 retrieve the particle system that owns this process (const version)

CParticleSystemgetOwner (void)
 Retrieve the particle system that owns this process.

virtual uint getUserMatrixUsageCount () const
virtual bool hasEmitters (void) const
 tells wether there are alive emitters / particles in the system

virtual bool hasParticles (void) const
 tells wether there are alive entities / particles in the system

virtual bool isLocated () const
virtual bool isParametricMotionEnabled (void) const
 test wether parametric motion is enabled

virtual void performParametricMotion (TAnimationTime date, TAnimationTime ellapsedTime, TAnimationTime realEllapsedTime)
 perform parametric motion if enabled

virtual uint querryMaxWantedNumFaces (void)=0
 max number of faces wanted by this process (for load balancing)

virtual void releaseAllRef ()=0
virtual void releaseRefTo (const CParticleSystemProcess *other)=0
virtual void setMatrixMode (TPSMatrixMode matrixMode)
void setOwner (CParticleSystem *ps)
 Set the process owner. Called by the particle system during attachment.

virtual void setZBias (float value)=0
virtual void step (TPSProcessPass pass, TAnimationTime ellapsedTime, TAnimationTime realEt)=0
virtual void systemDateChanged ()
virtual void updateLife (TAnimationTime ellapsedTime)=0
 Update the life of objects..

Object
 CParticleSystemProcess ()
 ctor

virtual void serial (NLMISC::IStream &f) throw (NLMISC::EStream)
virtual ~CParticleSystemProcess ()
 dtor


Protected Attributes

TPSMatrixMode _MatrixMode
CParticleSystem_Owner


Constructor & Destructor Documentation

NL3D::CParticleSystemProcess::CParticleSystemProcess  )  [inline]
 

ctor

Definition at line 81 of file particle_system_process.h.

References _MatrixMode, and NL3D::PSFXWorldMatrix.

00081 : _Owner(NULL), _MatrixMode(PSFXWorldMatrix) {}

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

dtor

Definition at line 84 of file particle_system_process.h.

00084 {}


Member Function Documentation

virtual bool NL3D::CParticleSystemProcess::computeBBox NLMISC::CAABBox aabbox  )  const [pure virtual]
 

Compute the aabbox of this process, (expressed in world basis).

Returns:
true if there is any aabbox
Parameters:
aabbox a ref to the result box

Implemented in NL3D::CPSLocated.

virtual void NL3D::CParticleSystemProcess::enumTexs std::vector< NLMISC::CSmartPtr< ITexture > > &  dest,
IDriver drv
[pure virtual]
 

Implemented in NL3D::CPSLocated.

virtual std::string NLMISC::IClassable::getClassName  )  [pure virtual, inherited]
 

Implemented in NLAIAGENT::CNumericIndex, NLAIC::IPointerGestion, NLAIC::CIdentType, and CAutomataDesc.

Referenced by NLMISC::CClassRegistry::checkObject(), and NL3D::GetTextureSize().

const CFontGenerator * NL3D::CParticleSystemProcess::getFontGenerator void   )  const
 

Shortcut to get a font generator if one was set, const version (edition mode).

Definition at line 78 of file particle_system_process.cpp.

References NL3D::CParticleSystem::getFontGenerator(), and nlassert.

00079 {
00080                         nlassert(_Owner);
00081                         return _Owner->getFontGenerator();
00082 }

CFontGenerator * NL3D::CParticleSystemProcess::getFontGenerator void   ) 
 

Shortcut to get a font generator if one was set (edition mode).

Definition at line 71 of file particle_system_process.cpp.

References NL3D::CParticleSystem::getFontGenerator(), and nlassert.

Referenced by NL3D::CPSLocatedBindable::getFontGenerator().

00072 {
00073                         nlassert(_Owner);
00074                         return _Owner->getFontGenerator();
00075 }

const CFontManager * NL3D::CParticleSystemProcess::getFontManager void   )  const
 

Shortcut to get a font Manager if one was set, const version (edition mode).

Definition at line 92 of file particle_system_process.cpp.

References NL3D::CParticleSystem::getFontManager(), and nlassert.

00093 {
00094                         nlassert(_Owner);
00095                         return _Owner->getFontManager();
00096 }

CFontManager * NL3D::CParticleSystemProcess::getFontManager void   ) 
 

Shortcut to get a font Manager if one was set (edition mode).

Definition at line 85 of file particle_system_process.cpp.

References NL3D::CParticleSystem::getFontManager(), and nlassert.

Referenced by NL3D::CPSLocatedBindable::getFontManager().

00086 {
00087                         nlassert(_Owner);
00088                         return _Owner->getFontManager();
00089 }

TPSMatrixMode NL3D::CParticleSystemProcess::getMatrixMode  )  const [inline]
 

Definition at line 143 of file particle_system_process.h.

References _MatrixMode, and NL3D::TPSMatrixMode.

Referenced by NL3D::CPSForce::cancelIntegrable(), NL3D::CPSLocated::computeI(), NL3D::CPSLocated::computeJ(), NL3D::CPSLocated::computeK(), NL3D::CPSAttribMakerT< T, F >::get(), NL3D::CPSLocated::getConversionMatrix(), NL3D::CPSLocated::getLocalToWorldMatrix(), NL3D::CPSLocated::getWorldToLocalMatrix(), NL3D::CPSLocated::integrableForceBasisChanged(), NL3D::CPSAttribMakerT< uint32, CPSValueBlendFunc< uint32 > >::make(), NL3D::CPSAttribMakerT< uint32, CPSValueBlendFunc< uint32 > >::make4(), NL3D::CPSAttribMakerT< uint32, CPSValueBlendFunc< uint32 > >::makeN(), NL3D::CPSLocated::newElement(), NL3D::CPSEmitter::processEmit(), NL3D::CPSEmitter::processEmitConsistent(), NL3D::CPSLocated::registerIntegrableForce(), NL3D::CPSForce::renewIntegrable(), NL3D::CPSLocated::setMatrixMode(), and NL3D::CPSLocated::unregisterIntegrableForce().

00143 { return _MatrixMode; }                 

const CParticleSystem* NL3D::CParticleSystemProcess::getOwner void   )  const [inline]
 

retrieve the particle system that owns this process (const version)

Definition at line 114 of file particle_system_process.h.

00114 { return _Owner ; }

CParticleSystem* NL3D::CParticleSystemProcess::getOwner void   )  [inline]
 

Retrieve the particle system that owns this process.

Definition at line 111 of file particle_system_process.h.

Referenced by NL3D::CPSTargetLocatedBindable::attachTarget(), NL3D::CPSEmitter::checkLoop(), NL3D::CPSParticle::computeSrcStep(), NL3D::CPSMesh::deleteElement(), NL3D::CPSLocatedBindable::displayIcon2d(), NL3D::CPSTailDot::displayRibbons(), NL3D::CPSRibbonLookAt::displayRibbons(), NL3D::CPSRibbon::displayRibbons(), NL3D::CPSShockWave::draw(), NL3D::CPSDot::draw(), NL3D::CPSConstraintMeshHelper::drawMeshs(), NL3D::CPSConstraintMeshHelper::drawPrerotatedMeshs(), NL3D::CPSLocatedBindable::finalize(), NL3D::GenEmitterPositions(), NL3D::GenEmitterPositionsWithLOD(), NL3D::CPSLocatedBindable::getInvertedSysMat(), NL3D::CPSLocatedBindable::getInvertedViewMat(), NL3D::CPSLocatedBindable::getSysMat(), NL3D::CPSLocatedBindable::getViewMat(), NL3D::CPSConstraintMesh::newElement(), NL3D::CPSMesh::newElement(), NL3D::CPSEmitter::processRegularEmission(), NL3D::CPSEmitter::processRegularEmissionConsistent(), NL3D::CPSEmitter::processRegularEmissionConsistentWithNoLOD(), NL3D::CPSEmitter::processRegularEmissionWithNoLOD(), NL3D::CParticleSystem::registerLocatedBindableExternID(), NL3D::CPSEmitter::setEmissionType(), NL3D::CPSEmitter::setEmitDelay(), NL3D::CPSEmitter::setEmittedType(), NL3D::CPSLocatedBindable::setExternID(), NL3D::CPSEmitter::setMaxEmissionCount(), NL3D::CPSLocatedBindable::setOwner(), NL3D::CPSEmitter::setPeriod(), NL3D::CPSEmitter::setPeriodScheme(), NL3D::CPSTailDot::setupGlobalColor(), NL3D::CPSFanLight::setupMaterial(), NL3D::CPSRibbon::setupTexturedGlobalColor(), NL3D::CPSRibbon::setupUntexturedGlobalColor(), NL3D::CPSZoneRectangle::show(), NL3D::CPSZoneCylinder::show(), NL3D::CPSZoneDisc::show(), NL3D::CPSZoneSphere::show(), NL3D::CPSZonePlane::show(), NL3D::CPSLight::show(), NL3D::CPSCylindricVortex::show(), NL3D::CPSDirectionnalForce::show(), NL3D::CPSSphericalEmitter::showTool(), NL3D::CPSEmitterRectangle::showTool(), NL3D::CPSEmitter::showTool(), NL3D::CPSTailDot::step(), NL3D::CPSRibbonLookAt::step(), NL3D::CPSRibbon::step(), NL3D::CPSLight::step(), NL3D::CPSEmitter::step(), NL3D::CPSRibbonBase::systemDateChanged(), NL3D::CParticleSystem::unregisterLocatedBindableExternID(), NL3D::CPSConstraintMesh::update(), NL3D::CPSRibbonBase::updateGlobals(), NL3D::CPSRibbonBase::updateLOD(), NL3D::CPSQuad::updateMatBeforeRendering(), NL3D::CPSTailDot::updateMaterial(), NL3D::CPSMesh::updatePos(), NL3D::CPSEmitter::updatePSRefCountForUserMatrixUsage(), NL3D::CPSRibbon::updateTexturedMaterial(), NL3D::CPSRibbon::updateUntexturedMaterial(), NL3D::CPSQuad::updateVbColNUVForRender(), NL3D::CPSLight::~CPSLight(), NL3D::CPSLocatedBindable::~CPSLocatedBindable(), and NL3D::CPSMesh::~CPSMesh().

00111 { return _Owner ; }

uint NL3D::CParticleSystemProcess::getUserMatrixUsageCount  )  const [virtual]
 

Reimplemented in NL3D::CPSLocated.

Definition at line 52 of file particle_system_process.cpp.

References _MatrixMode, NL3D::PSUserMatrix, and uint.

Referenced by setOwner().

00053 {
00054         return _MatrixMode == PSUserMatrix;
00055 }

virtual bool NL3D::CParticleSystemProcess::hasEmitters void   )  const [inline, virtual]
 

tells wether there are alive emitters / particles in the system

Reimplemented in NL3D::CPSLocated.

Definition at line 154 of file particle_system_process.h.

00154 { return false ; }

virtual bool NL3D::CParticleSystemProcess::hasParticles void   )  const [inline, virtual]
 

tells wether there are alive entities / particles in the system

Reimplemented in NL3D::CPSLocated.

Definition at line 151 of file particle_system_process.h.

00151 { return false ; }

virtual bool NL3D::CParticleSystemProcess::isLocated  )  const [inline, virtual]
 

Reimplemented in NL3D::CPSLocated.

Definition at line 177 of file particle_system_process.h.

Referenced by NL3D::CParticleSystem::activateEmitters(), NL3D::CParticleSystem::getCurrNumParticles(), NL3D::CParticleSystem::getMaxNumParticles(), NL3D::CParticleSystem::getTargeters(), NL3D::CParticleSystem::hasActiveEmitters(), NL3D::CParticleSystem::hasEmittersTemplates(), and NL3D::CParticleSystem::matchArraySize().

00177 { return false; }

virtual bool NL3D::CParticleSystemProcess::isParametricMotionEnabled void   )  const [inline, virtual]
 

test wether parametric motion is enabled

Reimplemented in NL3D::CPSLocated.

Definition at line 163 of file particle_system_process.h.

00163 { return false;}

virtual void NL3D::CParticleSystemProcess::performParametricMotion TAnimationTime  date,
TAnimationTime  ellapsedTime,
TAnimationTime  realEllapsedTime
[inline, virtual]
 

perform parametric motion if enabled

Reimplemented in NL3D::CPSLocated.

Definition at line 166 of file particle_system_process.h.

References nlassert, and NL3D::TAnimationTime.

00168                                                                                                                           { nlassert(0);}

virtual uint NL3D::CParticleSystemProcess::querryMaxWantedNumFaces void   )  [pure virtual]
 

max number of faces wanted by this process (for load balancing)

Implemented in NL3D::CPSLocated.

virtual void NL3D::CParticleSystemProcess::releaseAllRef  )  [pure virtual]
 

Release any reference this process may have to other process of the system For example, this is used when detaching a process of a system.

Implemented in NL3D::CPSLocated.

Referenced by setOwner().

virtual void NL3D::CParticleSystemProcess::releaseRefTo const CParticleSystemProcess other  )  [pure virtual]
 

Release any reference this process may have on the given process. Force example, this may be used to remove a target from a force. For example, this is used when detaching a process of a system.

Implemented in NL3D::CPSLocated.

void NL3D::CParticleSystemProcess::serial NLMISC::IStream f  )  throw (NLMISC::EStream) [virtual]
 

Serialize this object. Everything is saved, except for the fontManager and the fontGenerator. They must be set again if the PSToolRender pass is used.

Implements NLMISC::IStreamable.

Reimplemented in NL3D::CPSLocated.

Definition at line 101 of file particle_system_process.cpp.

References nlassert, NL3D::PSFXWorldMatrix, NL3D::PSIdentityMatrix, and sint.

00102 {       
00103         // version 2 : added matrix mode (just not fx world matrix or identity)
00104         // version 1 : base version
00105         sint ver = f.serialVersion(2);
00106         f.serialPtr(_Owner);
00107         if (ver == 1)
00108         {       
00109                 nlassert(f.isReading());
00110                 bool usesFXWorldMatrix;
00111                 f.serial(usesFXWorldMatrix);
00112                 _MatrixMode = usesFXWorldMatrix ? PSFXWorldMatrix : PSIdentityMatrix;
00113         }
00114         if (ver >= 2)
00115         {
00116                 f.serialEnum(_MatrixMode);
00117         }
00118 }

void NL3D::CParticleSystemProcess::setMatrixMode TPSMatrixMode  matrixMode  )  [virtual]
 

Choose the basis for this process. NB: This won't change any existing coordinate By default, all process are expressed in the world basis

Reimplemented in NL3D::CPSLocated.

Definition at line 58 of file particle_system_process.cpp.

References _MatrixMode, NL3D::CParticleSystem::matrixModeChanged(), nlassert, NL3D::PSMatrixModeCount, and uint.

00059 {
00060         nlassert((uint) matrixMode <= PSMatrixModeCount);
00061         if (matrixMode == _MatrixMode) return;
00062         if (_Owner) // notify the system that matrix mode has changed for that object
00063         {
00064                 _Owner->matrixModeChanged(this, _MatrixMode, matrixMode);
00065         }
00066         _MatrixMode = matrixMode;
00067 }

void NL3D::CParticleSystemProcess::setOwner CParticleSystem ps  ) 
 

Set the process owner. Called by the particle system during attachment.

Definition at line 38 of file particle_system_process.cpp.

References NL3D::CParticleSystem::addRefForUserSysCoordInfo(), getUserMatrixUsageCount(), releaseAllRef(), and NL3D::CParticleSystem::releaseRefForUserSysCoordInfo().

Referenced by NL3D::CParticleSystem::attach(), NL3D::CParticleSystem::detach(), and NL3D::CParticleSystem::remove().

00039 {
00040         if (ps == _Owner) return;
00041         if (ps == NULL)
00042         {
00043                 releaseAllRef();                
00044         }       
00045         _Owner->releaseRefForUserSysCoordInfo(getUserMatrixUsageCount());               
00046         _Owner = ps; 
00047         if (_Owner) _Owner->addRefForUserSysCoordInfo(getUserMatrixUsageCount());
00048 }

virtual void NL3D::CParticleSystemProcess::setZBias float  value  )  [pure virtual]
 

Implemented in NL3D::CPSLocated.

virtual void NL3D::CParticleSystemProcess::step TPSProcessPass  pass,
TAnimationTime  ellapsedTime,
TAnimationTime  realEt
[pure virtual]
 

execute this process, telling how much time ellapsed must be used for motion, and the real time ellapsed (for lifetime managment)

Implemented in NL3D::CPSLocated.

virtual void NL3D::CParticleSystemProcess::systemDateChanged  )  [inline, virtual]
 

Reimplemented in NL3D::CPSLocated.

Definition at line 174 of file particle_system_process.h.

00174 {}

virtual void NL3D::CParticleSystemProcess::updateLife TAnimationTime  ellapsedTime  )  [pure virtual]
 

Update the life of objects..

Implemented in NL3D::CPSLocated.


Field Documentation

TPSMatrixMode NL3D::CParticleSystemProcess::_MatrixMode [protected]
 

Definition at line 193 of file particle_system_process.h.

Referenced by CParticleSystemProcess(), getMatrixMode(), getUserMatrixUsageCount(), and setMatrixMode().

CParticleSystem* NL3D::CParticleSystemProcess::_Owner [protected]
 

Definition at line 190 of file particle_system_process.h.

Referenced by NL3D::CPSLocated::getConversionMatrix().


The documentation for this class was generated from the following files:
Generated on Tue Mar 16 06:59:46 2004 for NeL by doxygen 1.3.6