Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

osgParticle::ParticleSystem Class Reference

The heart of this class library; its purpose is to hold a set of particles and manage particle creation, update, rendering and destruction. More...

Inheritance diagram for osgParticle::ParticleSystem:

Inheritance graph
[legend]
List of all members.

Public Types

enum  Alignment { BILLBOARD, FIXED }

Public Methods

 ParticleSystem ()
 ParticleSystem (const ParticleSystem &copy, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
 META_Object (osgParticle, ParticleSystem)
Alignment getParticleAlignment () const
 Get the alignment type of particles.

void setParticleAlignment (Alignment a)
 Set the alignment type of particles.

const osg::Vec3getAlignVectorX () const
 Get the X-axis alignment vector.

void setAlignVectorX (const osg::Vec3 &v)
 Set the X-axis alignment vector.

const osg::Vec3getAlignVectorY () const
 Get the Y-axis alignment vector.

void setAlignVectorY (const osg::Vec3 &v)
 Set the Y-axis alignment vector.

void setAlignVectors (const osg::Vec3 &X, const osg::Vec3 &Y)
 Set the alignment vectors.

const osg::BoundingBoxgetDefaultBoundingBox () const
 Get the default bounding box.

void setDefaultBoundingBox (const osg::BoundingBox &bbox)
 Set the default bounding box.

bool getDoublePassRendering () const
 Get the double pass rendering flag.

void setDoublePassRendering (bool v)
 Set the double pass rendering flag.

bool isFrozen () const
 Return true if the particle system is frozen.

void setFrozen (bool v)
 Set or reset the frozen state.

int numParticles () const
 Get the number of allocated particles (alive + dead).

int numDeadParticles () const
 Get the number of dead particles.

ParticlegetParticle (int i)
 Get a pointer to the i-th particle.

const ParticlegetParticle (int i) const
 Get a const pointer to the i-th particle.

virtual ParticlecreateParticle (const Particle *ptemplate)
 Create a new particle from the specified template (or the default one if ptemplate is null).

virtual void destroyParticle (int i)
 Destroy the i-th particle.

int getLastFrameNumber () const
 Get the last frame number.

const ParticlegetDefaultParticleTemplate () const
 Get a reference to the default particle template.

void setDefaultParticleTemplate (const Particle &p)
 Set the default particle template (particle is copied).

bool getFreezeOnCull () const
 Get whether the particle system can freeze when culled.

void setFreezeOnCull (bool v)
 Set whether the particle system can freeze when culled (default is true).

void setDefaultAttributes (const std::string &texturefile="", bool emissive_particles=true, bool lighting=false, int texture_unit=0)
 A useful method to set the most common StateAttribute's in one call.

int getLevelOfDetail () const
 (EXPERIMENTAL) Get the level of detail.

void setLevelOfDetail (int v)
 (EXPERIMENTAL) Set the level of detail.

virtual void update (double dt)
 Update the particles. Don't call this directly, use a ParticleSystemUpdater instead.


Protected Methods

virtual ~ParticleSystem ()
ParticleSystem & operator= (const ParticleSystem &)
virtual const bool computeBound () const
 compute the bounding box of the drawable.

virtual void drawImmediateMode (osg::State &state)
 draw directly ignoring an OpenGL display list which could be attached.

void update_bounds (const osg::Vec3 &p, float r)
void single_pass_render (osg::State &state, const osg::Matrix &modelview)

Detailed Description

The heart of this class library; its purpose is to hold a set of particles and manage particle creation, update, rendering and destruction.

You can add this drawable to any Geode as you usually do with other Drawable classes. Each instance of ParticleSystem is a separate set of particles; it provides the interface for creating particles and iterating through them (see the Emitter and Program classes).


Member Enumeration Documentation

enum osgParticle::ParticleSystem::Alignment
 

Enumeration values:
BILLBOARD 
FIXED 


Constructor & Destructor Documentation

osgParticle::ParticleSystem::ParticleSystem  
 

osgParticle::ParticleSystem::ParticleSystem const ParticleSystem &    copy,
const osg::CopyOp   copyop = osg::CopyOp::SHALLOW_COPY
 

virtual osgParticle::ParticleSystem::~ParticleSystem   [protected, virtual]
 


Member Function Documentation

const bool osgParticle::ParticleSystem::computeBound   const [inline, protected, virtual]
 

compute the bounding box of the drawable.

Method must be implemented by subclasses.

Reimplemented from osg::Drawable.

Particle * osgParticle::ParticleSystem::createParticle const Particle   ptemplate [inline, virtual]
 

Create a new particle from the specified template (or the default one if ptemplate is null).

void osgParticle::ParticleSystem::destroyParticle int    i [inline, virtual]
 

Destroy the i-th particle.

virtual void osgParticle::ParticleSystem::drawImmediateMode osg::State   state [protected, virtual]
 

draw directly ignoring an OpenGL display list which could be attached.

This is the internal draw method which does the drawing itself, and is the method to override when deriving from Drawable.

Implements osg::Drawable.

const osg::Vec3 & osgParticle::ParticleSystem::getAlignVectorX   const [inline]
 

Get the X-axis alignment vector.

const osg::Vec3 & osgParticle::ParticleSystem::getAlignVectorY   const [inline]
 

Get the Y-axis alignment vector.

const osg::BoundingBox & osgParticle::ParticleSystem::getDefaultBoundingBox   const [inline]
 

Get the default bounding box.

const Particle & osgParticle::ParticleSystem::getDefaultParticleTemplate   const [inline]
 

Get a reference to the default particle template.

bool osgParticle::ParticleSystem::getDoublePassRendering   const [inline]
 

Get the double pass rendering flag.

bool osgParticle::ParticleSystem::getFreezeOnCull   const [inline]
 

Get whether the particle system can freeze when culled.

int osgParticle::ParticleSystem::getLastFrameNumber   const [inline]
 

Get the last frame number.

int osgParticle::ParticleSystem::getLevelOfDetail   const [inline]
 

(EXPERIMENTAL) Get the level of detail.

const Particle * osgParticle::ParticleSystem::getParticle int    i const [inline]
 

Get a const pointer to the i-th particle.

Particle * osgParticle::ParticleSystem::getParticle int    i [inline]
 

Get a pointer to the i-th particle.

ParticleSystem::Alignment osgParticle::ParticleSystem::getParticleAlignment   const [inline]
 

Get the alignment type of particles.

bool osgParticle::ParticleSystem::isFrozen   const [inline]
 

Return true if the particle system is frozen.

osgParticle::ParticleSystem::META_Object osgParticle   ,
ParticleSystem   
 

int osgParticle::ParticleSystem::numDeadParticles   const [inline]
 

Get the number of dead particles.

int osgParticle::ParticleSystem::numParticles   const [inline]
 

Get the number of allocated particles (alive + dead).

ParticleSystem& osgParticle::ParticleSystem::operator= const ParticleSystem &    [inline, protected]
 

void osgParticle::ParticleSystem::setAlignVectors const osg::Vec3   X,
const osg::Vec3   Y
[inline]
 

Set the alignment vectors.

void osgParticle::ParticleSystem::setAlignVectorX const osg::Vec3   v [inline]
 

Set the X-axis alignment vector.

void osgParticle::ParticleSystem::setAlignVectorY const osg::Vec3   v [inline]
 

Set the Y-axis alignment vector.

void osgParticle::ParticleSystem::setDefaultAttributes const std::string &    texturefile = "",
bool    emissive_particles = true,
bool    lighting = false,
int    texture_unit = 0
 

A useful method to set the most common StateAttribute's in one call.

If texturefile is empty, then texturing is turned off.

void osgParticle::ParticleSystem::setDefaultBoundingBox const osg::BoundingBox   bbox [inline]
 

Set the default bounding box.

The default bounding box is used when a real bounding box cannot be computed, for example because no particles has been updated yet.

void osgParticle::ParticleSystem::setDefaultParticleTemplate const Particle   p [inline]
 

Set the default particle template (particle is copied).

void osgParticle::ParticleSystem::setDoublePassRendering bool    v [inline]
 

Set the double pass rendering flag.

Double pass rendering avoids overdraw problems between particle systems and other opaque objects. If you can render all the particle systems <U>after</U> the opaque objects, then double pass is not necessary and can be turned off (best choice). If you set the default attributes with setDefaultAttributes, then the particle system will fall into a transparent bin.

void osgParticle::ParticleSystem::setFreezeOnCull bool    v [inline]
 

Set whether the particle system can freeze when culled (default is true).

void osgParticle::ParticleSystem::setFrozen bool    v [inline]
 

Set or reset the frozen state.

When the particle system is frozen, emitters and programs won't do anything on it.

void osgParticle::ParticleSystem::setLevelOfDetail int    v [inline]
 

(EXPERIMENTAL) Set the level of detail.

The total number of particles is divided by the detail value to get the actual number of particles to be drawn. This value must be greater than zero.

void osgParticle::ParticleSystem::setParticleAlignment Alignment    a [inline]
 

Set the alignment type of particles.

void osgParticle::ParticleSystem::single_pass_render osg::State   state,
const osg::Matrix   modelview
[protected]
 

virtual void osgParticle::ParticleSystem::update double    dt [virtual]
 

Update the particles. Don't call this directly, use a ParticleSystemUpdater instead.

void osgParticle::ParticleSystem::update_bounds const osg::Vec3   p,
float    r
[inline, protected]
 


The documentation for this class was generated from the following file:
Generated at Wed Sep 18 13:55:53 2002 for the Open Scene Graph by doxygen 1.2.16.