| public | 
Inheritance Graph
graph BT
	ParticleSystemNode
	ParticleSystemNode --> Node
	click ParticleSystemNode "classMinSG_1_1ParticleSystemNode"
	click Node "classMinSG_1_1Node"
Description
Node holding particles and being the interface for different decorators. Contains only the logic for moving/animating and collecting particles, the rest is done by emitters, affectors and renderers.
Emitter: Produces and initializes particles. See ParticlePointEmitter for a simple example.
Affector: Processes all particles each frame (or: in every run of the behaviours). Affectors can do about everything. They could also produce output outside the particle system (e.g. by building a path using the particle data). The most important affector is ParticleAnimator . It calls ParticleSystemNode::collectAndAnimateParticles - without it not much will happen.
Renderer: Called by ParticleSystemNode to display the particles. Per default a simple PointRenderer, though you might want to use the BILLBOARD_RENDERER.
The user of the particle system is responsable for registering the behaviours (emitter/affector) with a behaviour manager, so that they are executed.
Author: Jan Krems, Benjamin Eikel
Date: 2010-06-04
Public Types
| enum | renderer_t {POINT_RENDERER, BILLBOARD_RENDERER} | 
| typedef Util::Reference < ParticleSystemNode > | ref_t | 
| typedef std::function< void( ParticleSystemNode *, FrameContext &, const RenderParam &)> | ParticleRenderer | 
Public Functions
| ParticleSystemNode() | ||
| ParticleSystemNode(const ParticleSystemNode & void) | ||
| ~ParticleSystemNode() release data | ||
| void | setRenderer( renderer_t  typeId) Set renderer based on rendererId. | |
| void | setRenderer( ParticleRenderer  _renderer) set custom renderer | |
| renderer_t | getRendererType() const Get type-id of renderer. Used for serialization. | |
| void | doDisplay( FrameContext & context, const RenderParam & rp) | > Node | 
| void | addParticle(const Particle & particle) | |
| std::vector< Particle > & | getParticles() (internal) should only used by a ParticleAffector | |
| uint32_t | getParticleCount() const (internal) should only used by a ParticleAffector | |
| uint32_t | getMaxParticleCount() const | |
| void | setMaxParticleCount(uint32_t max) | |
| void | collectAndAnimateParticles( AbstractBehaviour::timestamp_t elapsed) | 
Documentation
enum
 MinSG::ParticleSystemNode::renderer_t
| public | 
| enum renderer_t | 
| Enumerator | Description | |
|---|---|---|
| Enumerator | Description | |
| POINT_RENDERER | = 1024 | |
| BILLBOARD_RENDERER | = 1025 | 
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:58
typedef
 MinSG::ParticleSystemNode::ref_t
| public | 
| typedef Util::Reference < ParticleSystemNode > ref_t | 
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:56
typedef
 MinSG::ParticleSystemNode::ParticleRenderer
| public | 
| typedef std::function< void( ParticleSystemNode *, FrameContext &, const RenderParam &)> ParticleRenderer | 
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:63
function
 MinSG::ParticleSystemNode::ParticleSystemNode
| public | 
| ParticleSystemNode( | ) | 
set default values & renderer
- 
    no particles 
- 
    max particles: 1000 
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:70
function
 MinSG::ParticleSystemNode::ParticleSystemNode
| public | 
| ParticleSystemNode( | const ParticleSystemNode & | void ) | 
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:71
function
 MinSG::ParticleSystemNode::~ParticleSystemNode
| public | virtual | 
| ~ParticleSystemNode( | ) | 
release data
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:74
function
 MinSG::ParticleSystemNode::setRenderer
| public | 
| void setRenderer( | renderer_t | typeId ) | 
Set renderer based on rendererId.
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:77
function
 MinSG::ParticleSystemNode::setRenderer
| public | 
| void setRenderer( | ParticleRenderer | _renderer ) | 
set custom renderer
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:80
function
 MinSG::ParticleSystemNode::getRendererType
| public | const | inline | 
| renderer_t getRendererType( | ) const | 
Get type-id of renderer. Used for serialization.
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:83
function
 MinSG::ParticleSystemNode::doDisplay
| public | virtual | 
| void doDisplay( | FrameContext & | context, | 
| const RenderParam & | rp | |
| ) | 
| > Node | 
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:86
function
 MinSG::ParticleSystemNode::addParticle
| public | inline | 
| void addParticle( | const Particle & | particle ) | 
(internal) should only used by a ParticleEmitter Create a new particle and return it for initialization
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:90
function
 MinSG::ParticleSystemNode::getParticles
| public | inline | 
| std::vector< Particle > & getParticles( | ) | 
(internal) should only used by a ParticleAffector
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:95
function
 MinSG::ParticleSystemNode::getParticleCount
| public | const | inline | 
| uint32_t getParticleCount( | ) const | 
(internal) should only used by a ParticleAffector
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:100
function
 MinSG::ParticleSystemNode::getMaxParticleCount
| public | const | inline | 
| uint32_t getMaxParticleCount( | ) const | 
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:102
function
 MinSG::ParticleSystemNode::setMaxParticleCount
| public | inline | 
| void setMaxParticleCount( | uint32_t | max ) | 
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:103
function
 MinSG::ParticleSystemNode::collectAndAnimateParticles
| public | 
| void collectAndAnimateParticles( | AbstractBehaviour::timestamp_t | elapsed ) | 
(internal)* ONLY CALLED BY ParticleAnimator
- 
    age particles (subtract the elapsed time from timeLeft) 
- 
    collect dead particles (timeLeft <= 0) 
- 
    animate particles left 
Defined in MinSG/Ext/ParticleSystem/ParticleSystemNode.h:109