igor::iNodeParticleSystem Class Reference

#include <iNodeParticleSystem.h>

Inherits igor::iNodeVolume.

Public Member Functions

void reset ()
 
void start ()
 
void stop ()
 
bool isRunning ()
 
bool isFinished () const
 
uint32 getParticleCount ()
 
void setMaxParticleCount (uint16 max)
 
uint16 getMaxParticleCount () const
 
void setLoop (bool loop=true)
 
bool isLooped () const
 
void setEmitter (uint64 emitterID)
 
uint64 getEmitter () const
 
void setVortexTorque (float32 min, float32 max)
 
float32 getVortexTorqueMin ()
 
float32 getVortexTorqueMax ()
 
void setVortexRange (float32 min, float32 max)
 
float32 getVortexRangeMin ()
 
float32 getVortexRangeMax ()
 
void setVortexCheckRange (uint8 particles)
 
uint8 getVortexCheckRange ()
 
void setTextureTiling (uint32 columns, uint32 rows)
 
uint32 getTextureColumns () const
 
uint32 getTextureRows () const
 
void setColorGradient (const iaKeyFrameGraphColor4f &colorGradient)
 
void getColorGradient (iaKeyFrameGraphColor4f &colorGradient) const
 
void setEmissionGradient (const iaKeyFrameGraphf &emissionGradient)
 
void getEmissionGradient (iaKeyFrameGraphf &emissionGradient) const
 
void setStartAgeGradient (const iaKeyFrameGraphVector2f &visibleGradient)
 
void getStartAgeGradient (iaKeyFrameGraphVector2f &visibleGradient) const
 
void setSizeScaleGradient (const iaKeyFrameGraphf &sizeScaleGradient)
 
void getSizeScaleGradient (iaKeyFrameGraphf &sizeScaleGradient) const
 
void setStartSizeGradient (const iaKeyFrameGraphVector2f &sizeGradient)
 
void getStartSizeGradient (iaKeyFrameGraphVector2f &sizeGradient) const
 
void setStartVelocityGradient (const iaKeyFrameGraphVector2f &velocityGradient)
 
void getStartVelocityGradient (iaKeyFrameGraphVector2f &velocityGradient) const
 
void setStartLiftGradient (const iaKeyFrameGraphVector2f &liftGradient)
 
void getStartLiftGradient (iaKeyFrameGraphVector2f &liftGradient) const
 
void setStartOrientationGradient (const iaKeyFrameGraphVector2f &orientationGradient)
 
void getStartOrientationGradient (iaKeyFrameGraphVector2f &orientationGradient) const
 
void setStartOrientationRateGradient (const iaKeyFrameGraphVector2f &orientationRateGradient)
 
void getStartOrientationRateGradient (iaKeyFrameGraphVector2f &orientationRateGradient) const
 
void setVortexToParticleRate (float32 rate)
 
float32 getVortexToParticleRate () const
 
void setVorticityConfinement (float32 vorticityConfinement)
 
float32 getVorticityConfinement ()
 
void setAirDrag (float32 airDrag)
 
float32 getAirDrag () const
 
void setPeriodTime (float32 periodTime)
 
float32 getPeriodTime () const
 
void setVelocityOriented (bool velocityOriented=true)
 
bool getVelocityOriented () const
 
void setTileIncrement (float32 tileIncrement)
 
float32 getTileIncrement () const
 
void registerParticleSystemFinishedDelegate (iParticleSystemFinishedDelegate delegate)
 
void unregisterParticleSystemFinishedDelegate (iParticleSystemFinishedDelegate delegate)
 
- Public Member Functions inherited from igor::iNodeVolume
iaVector3d getCenter () const
 
const iaVector3dgetRelativeCenter () const
 
const IGOR_API iaSpheredgetBoundingSphere () const
 
void setBoundingBox (const iAABoxd &bbox)
 
const IGOR_API iAABoxdgetBoundingBox () const
 
- Public Member Functions inherited from igor::iNodeRender
const iaMatrixdgetWorldMatrix () const
 
void setMaterial (const iMaterialPtr &material)
 
iMaterialPtr getMaterial () const
 
void setVisible (bool visible=true)
 
bool isVisible () const
 
virtual void draw ()=0
 
- Public Member Functions inherited from igor::iNode
iNodeKind getKind () const
 
iNodeType getType () const
 
iNodeID getID () const
 
const iaStringgetName () const
 
virtual std::vector< iaStringgetInfo (bool brief=false) const
 
void setName (const iaString &name)
 
void insertNode (iNodePtr node)
 
void insertNodeAsync (iNodePtr node)
 
void setActive (bool active=true)
 
void setActiveAsync (bool active=true)
 
void removeNode (iNodePtr node)
 
void removeNodeAsync (iNodePtr node)
 
bool isChild ()
 
bool isChild (iNodePtr child)
 
bool hasChildren ()
 
const std::vector< iNodePtr > & getChildren () const
 
void getAllChildren (std::vector< iNodePtr > &children) const
 
iNodePtr getChild (const iaString &name)
 
iNodePtr getChild (iNodeID id)
 
const std::vector< iNodePtr > & getInactiveChildren () const
 
iNodePtr getParent ()
 
iScenePtr getScene ()
 
bool isTransformationDirty ()
 
void setTransformationDirty (bool dirty=true)
 
void calcWorldTransformation (iaMatrixd &matrix)
 
bool isActive () const
 
iTransformationChangeEvent & getTransformationChangeEvent ()
 

Friends

class iNodeManager
 

Additional Inherited Members

- Static Public Member Functions inherited from igor::iNode
static iaString getKindName (iNodeKind kind)
 
static iaString getTypeName (iNodeType nodeType)
 
- Static Public Attributes inherited from igor::iNode
static const iNodeID INVALID_NODE_ID = IGOR_INVALID_ID
 
- Protected Member Functions inherited from igor::iNodeVolume
virtual IGOR_API void onUpdateTransform (iaMatrixd &matrix) override
 
virtual IGOR_API void onPreSetScene () override
 
virtual IGOR_API void onPostSetScene () override
 
void updateTree ()
 
 iNodeVolume ()
 
 iNodeVolume (iNodeVolume *node)
 
virtual ~iNodeVolume ()
 
- Protected Member Functions inherited from igor::iNodeRender
virtual void onUpdateTransform (iaMatrixd &matrix) override
 
virtual void onPreSetScene () override
 
virtual void onPostSetScene () override
 
 iNodeRender ()
 
 iNodeRender (iNodeRender *node)
 
virtual ~iNodeRender ()
 
- Protected Member Functions inherited from igor::iNode
void setTransformationDirtyDown ()
 
void setTransformationDirtyUp ()
 
void setDataDirty ()
 
bool isDataDirty ()
 
void setParent (iNodePtr parent)
 
void setScene (iScenePtr scene)
 
virtual void onUpdateTransform (iaMatrixd &matrix)
 
virtual void onPreSetScene ()
 
virtual void onPostSetScene ()
 
virtual bool onUpdateData ()
 
virtual void onPostCopyLink (std::map< iNodeID, iNodeID > &nodeIDMap)
 
 iNode ()
 
 iNode (iNodePtr node)
 
virtual ~iNode ()
 
- Protected Attributes inherited from igor::iNodeRender
iaMatrixd _worldMatrix
 
bool _visible = true
 
- Protected Attributes inherited from igor::iNode
bool _active = true
 
iNodeType _nodeType = iNodeType::iNode
 
iNodeKind _nodeKind = iNodeKind::Node
 
iaString _name = L"iNode"
 
bool _transformationDirty = true
 
iScenePtr _scene = nullptr
 
iNodePtr _parent = nullptr
 
std::vector< iNodePtr_children
 
std::vector< iNodePtr_inactiveChildren
 
iTransformationChangeEvent _transformationChangeEvent
 

Detailed Description

node to control a 3d particle system

Member Function Documentation

◆ getAirDrag()

float32 igor::iNodeParticleSystem::getAirDrag ( ) const
Returns
air drag factor

◆ getColorGradient()

void igor::iNodeParticleSystem::getColorGradient ( iaKeyFrameGraphColor4f colorGradient) const

returns the rainbow gradient

Parameters
[out]rainbowout value for the rainbow gradient

◆ getEmissionGradient()

void igor::iNodeParticleSystem::getEmissionGradient ( iaKeyFrameGraphf emissionGradient) const

returns the emission gradient

Parameters
[out]emissionGradientout value for the emission gradient

◆ getEmitter()

uint64 igor::iNodeParticleSystem::getEmitter ( ) const
Returns
the emitter node's id

◆ getMaxParticleCount()

uint16 igor::iNodeParticleSystem::getMaxParticleCount ( ) const
Returns
the maximum particle count used

◆ getParticleCount()

uint32 igor::iNodeParticleSystem::getParticleCount ( )
Returns
current particle count in use

there is no setter because the amount of particles depends on particle emission over time

◆ getPeriodTime()

float32 igor::iNodeParticleSystem::getPeriodTime ( ) const
Returns
period time of this particle system

◆ getSizeScaleGradient()

void igor::iNodeParticleSystem::getSizeScaleGradient ( iaKeyFrameGraphf sizeScaleGradient) const

returns the size scale gradient

Parameters
[out]sizeScaleGradientout value for the size gradient

◆ getStartAgeGradient()

void igor::iNodeParticleSystem::getStartAgeGradient ( iaKeyFrameGraphVector2f visibleGradient) const

returns the emission gradient

Parameters
[out]visibleGradientout value for the visible gradient

◆ getStartLiftGradient()

void igor::iNodeParticleSystem::getStartLiftGradient ( iaKeyFrameGraphVector2f liftGradient) const

returns the min max start lift gradient for particles at birth

Parameters
[out]liftGradientout value for the start lift gradient

◆ getStartOrientationGradient()

void igor::iNodeParticleSystem::getStartOrientationGradient ( iaKeyFrameGraphVector2f orientationGradient) const

returns the min max start lift gradient for particles at birth

Parameters
[out]orientationGradientout value for the start orientation gradient

◆ getStartOrientationRateGradient()

void igor::iNodeParticleSystem::getStartOrientationRateGradient ( iaKeyFrameGraphVector2f orientationRateGradient) const

returns the start min max orientation offset gradient for particles during visuble time

Parameters
[out]orientationRateGradientout value for the orientation rate gradient

◆ getStartSizeGradient()

void igor::iNodeParticleSystem::getStartSizeGradient ( iaKeyFrameGraphVector2f sizeGradient) const

returns the start size gradient for particles at birth

Parameters
[out]sizeGradientout value for the start size gradient

◆ getStartVelocityGradient()

void igor::iNodeParticleSystem::getStartVelocityGradient ( iaKeyFrameGraphVector2f velocityGradient) const

returns the min max start velocity gradient for particles at birth

Parameters
[out]velocityGradientout value for the start velocity gradient

◆ getTextureColumns()

uint32 igor::iNodeParticleSystem::getTextureColumns ( ) const
Returns
the horizontal tiling resolution of the first texture layer

◆ getTextureRows()

uint32 igor::iNodeParticleSystem::getTextureRows ( ) const
Returns
the vertical tiling resolution of the first texture layer

◆ getTileIncrement()

float32 igor::iNodeParticleSystem::getTileIncrement ( ) const
Returns
tile increment

◆ getVelocityOriented()

bool igor::iNodeParticleSystem::getVelocityOriented ( ) const
Returns
velocity oriented flag

◆ getVortexCheckRange()

uint8 igor::iNodeParticleSystem::getVortexCheckRange ( )
Returns
vortex check rangein indexes from vortex particle

◆ getVortexRangeMax()

float32 igor::iNodeParticleSystem::getVortexRangeMax ( )
Returns
maximum range of vortexes

◆ getVortexRangeMin()

float32 igor::iNodeParticleSystem::getVortexRangeMin ( )
Returns
minimum range of vortexes

◆ getVortexToParticleRate()

float32 igor::iNodeParticleSystem::getVortexToParticleRate ( ) const
Returns
likeliness of vortex particle to appear

◆ getVortexTorqueMax()

float32 igor::iNodeParticleSystem::getVortexTorqueMax ( )
Returns
maximum vortex torque

◆ getVortexTorqueMin()

float32 igor::iNodeParticleSystem::getVortexTorqueMin ( )
Returns
minimum vortex torque

◆ getVorticityConfinement()

float32 igor::iNodeParticleSystem::getVorticityConfinement ( )
Returns
vorticity confinement force

◆ isFinished()

bool igor::iNodeParticleSystem::isFinished ( ) const
Returns
true if particle system is finished

◆ isLooped()

bool igor::iNodeParticleSystem::isLooped ( ) const
Returns
true if particle system runs in loop

◆ isRunning()

bool igor::iNodeParticleSystem::isRunning ( )
Returns
true if particle system is currently running

◆ registerParticleSystemFinishedDelegate()

void igor::iNodeParticleSystem::registerParticleSystemFinishedDelegate ( iParticleSystemFinishedDelegate  delegate)

register delegate to particle system finished event

Parameters
delegatethe delegate to register

◆ reset()

void igor::iNodeParticleSystem::reset ( )

clears all particles

◆ setAirDrag()

void igor::iNodeParticleSystem::setAirDrag ( float32  airDrag)

sets the air drag

0.0-1.0 1.0 means basically no air drag 0.0 is a full stop and about 0.99 is a usefull value for simulating air drag

Parameters
airDragthe air drag factor (0.0 - 1.0)

◆ setColorGradient()

void igor::iNodeParticleSystem::setColorGradient ( const iaKeyFrameGraphColor4f colorGradient)

sets rainbow gradient for particles color

Parameters
rainbowthe rainbow gradient

◆ setEmissionGradient()

void igor::iNodeParticleSystem::setEmissionGradient ( const iaKeyFrameGraphf emissionGradient)

sets emission gradient for particles per frame

Parameters
emissionGradientthe emission gradient

◆ setEmitter()

void igor::iNodeParticleSystem::setEmitter ( uint64  emitterID)

sets emitter node id

Parameters
emitterIDthe emitter node's id

◆ setLoop()

void igor::iNodeParticleSystem::setLoop ( bool  loop = true)

sets if the particle system runs in a loop

Parameters
loopif true particle system runs in loop

◆ setMaxParticleCount()

void igor::iNodeParticleSystem::setMaxParticleCount ( uint16  max)

sets the maximum particle count

set to zero if you don't want a limit of created particles

Parameters
maxthe maximum count of particles used

◆ setPeriodTime()

void igor::iNodeParticleSystem::setPeriodTime ( float32  periodTime)

sets period time of this particle system

if loop is true. the particle system will be restarted after this time if loop is false. the particle system simulation will be stopped

Parameters
periodTimethe period time

◆ setSizeScaleGradient()

void igor::iNodeParticleSystem::setSizeScaleGradient ( const iaKeyFrameGraphf sizeScaleGradient)

sets size scale gradient for particles per frame

Parameters
sizeScaleGradientthe size gradient

◆ setStartAgeGradient()

void igor::iNodeParticleSystem::setStartAgeGradient ( const iaKeyFrameGraphVector2f visibleGradient)

sets visible gradient for particles per frame

Parameters
visibleGradientthe visible gradient

◆ setStartLiftGradient()

void igor::iNodeParticleSystem::setStartLiftGradient ( const iaKeyFrameGraphVector2f liftGradient)

sets min max start lift gradient for particles at birth

Parameters
liftGradientthe min max start lift gradient

◆ setStartOrientationGradient()

void igor::iNodeParticleSystem::setStartOrientationGradient ( const iaKeyFrameGraphVector2f orientationGradient)

sets min max start orientation gradient for particles at birth

Parameters
orientationGradientthe min max start orientation gradient

◆ setStartOrientationRateGradient()

void igor::iNodeParticleSystem::setStartOrientationRateGradient ( const iaKeyFrameGraphVector2f orientationRateGradient)

sets start min max orientation rate gradient for particles during visible time

Parameters
orientationRateGradientthe min max orientation rate gradient

◆ setStartSizeGradient()

void igor::iNodeParticleSystem::setStartSizeGradient ( const iaKeyFrameGraphVector2f sizeGradient)

sets start size gradient for particles at birth

Parameters
sizeGradientthe start size gradient with min and max values

◆ setStartVelocityGradient()

void igor::iNodeParticleSystem::setStartVelocityGradient ( const iaKeyFrameGraphVector2f velocityGradient)

sets min max start velocity gradient for particles at birth

Parameters
velocityGradientthe min max start velocity gradient

◆ setTextureTiling()

void igor::iNodeParticleSystem::setTextureTiling ( uint32  columns,
uint32  rows 
)

sets the tiling resolution of the first texture layer

Parameters
columnscolumn count (<= 1)
rowsrow count (<= 1)

◆ setTileIncrement()

void igor::iNodeParticleSystem::setTileIncrement ( float32  tileIncrement)

sets the increment the tile index is progressing per frame (default = 0.0)

fractional values are allowed

Parameters
tileIncrementthe tile increment to use

◆ setVelocityOriented()

void igor::iNodeParticleSystem::setVelocityOriented ( bool  velocityOriented = true)

sets the velocity oriented flag particles will be rendered oriented by thair velocity and screen

default id off

Parameters
velocityOrientedif true particles get rendered velocity oriented

◆ setVortexCheckRange()

void igor::iNodeParticleSystem::setVortexCheckRange ( uint8  particles)

sets vortex check range

Parameters
particlesdistance in indexes from vortex particle

◆ setVortexRange()

void igor::iNodeParticleSystem::setVortexRange ( float32  min,
float32  max 
)

sets minimum and maximum range of vortexes

Parameters
minminimum range of vortex
maxmaximum range of vortex

◆ setVortexToParticleRate()

void igor::iNodeParticleSystem::setVortexToParticleRate ( float32  rate)

sets the vortex to particle ratio

Parameters
ratethe rate of vortex particles to particles. default 0.01 = 1%

◆ setVortexTorque()

void igor::iNodeParticleSystem::setVortexTorque ( float32  min,
float32  max 
)

sets the range of vortex torque

Parameters
minminimum vortex torque
maxmaximum vortex torque

◆ setVorticityConfinement()

void igor::iNodeParticleSystem::setVorticityConfinement ( float32  vorticityConfinement)

sets vorticity confinement force

Parameters
vorticityConfinementthe vorticity confinement force

◆ start()

void igor::iNodeParticleSystem::start ( )

starts or resumes particle system

◆ stop()

void igor::iNodeParticleSystem::stop ( )

stops or pauses the particle system

◆ unregisterParticleSystemFinishedDelegate()

void igor::iNodeParticleSystem::unregisterParticleSystemFinishedDelegate ( iParticleSystemFinishedDelegate  delegate)

unregister delegate from particle system finished event

Parameters
delegatethe delegate to unregister

Friends And Related Function Documentation

◆ iNodeManager

friend class iNodeManager
friend

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