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