class OSGPARTICLE_EXPORT osgParticle::ParticleSystem

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

Inheritance:


Public Methods

[more] ParticleSystem()
[more] ParticleSystem(const ParticleSystem &copy, const osg::CopyOp &copyop = osg::CopyOp::SHALLOW_COPY)
[more] META_Object(osgParticle, ParticleSystem)
[more]inline Alignment getParticleAlignment() const
Get the alignment type of particles
[more]inline virtual Particle* createParticle(const Particle* ptemplate)
Create a new particle from the specified template (or the default one if ptemplate is null)
[more]inline virtual void destroyParticle(int i)
Destroy the i-th particle
[more]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.
[more]virtual void update(double dt)
Update the particles.
[more]inline ParticleSystem::Alignment getParticleAlignment() const
[more]inline void setParticleAlignment(Alignment a)
Set the alignment type of particles
[more]inline const osg::Vec3& getAlignVectorX() const
Get the X-axis alignment vector
[more]inline void setAlignVectorX(const osg::Vec3 &v)
Set the X-axis alignment vector
[more]inline const osg::Vec3& getAlignVectorY() const
Get the Y-axis alignment vector
[more]inline void setAlignVectorY(const osg::Vec3 &v)
Set the Y-axis alignment vector
[more]inline void setAlignVectors(const osg::Vec3 &X, const osg::Vec3 &Y)
Set the alignment vectors
[more]inline bool isFrozen() const
Return true if the particle system is frozen
[more]inline void setFrozen(bool v)
Set or reset the frozen state.
[more]inline const osg::BoundingBox& getDefaultBoundingBox() const
Get the default bounding box
[more]inline void setDefaultBoundingBox(const osg::BoundingBox &bbox)
Set the default bounding box.
[more]inline bool getDoublePassRendering() const
Get the double pass rendering flag
[more]inline void setDoublePassRendering(bool v)
Set the double pass rendering flag.
[more]inline int numParticles() const
Get the number of allocated particles (alive + dead)
[more]inline int numDeadParticles() const
Get the number of dead particles
[more]inline Particle* getParticle(int i)
Get a pointer to the i-th particle
[more]inline const Particle* getParticle(int i) const
Get a const pointer to the i-th particle
[more]inline void destroyParticle(int i)
[more]inline int getLastFrameNumber() const
Get the last frame number
[more]inline bool computeBound() const
[more]inline void update_bounds(const osg::Vec3 &p, float r)
[more]inline const Particle& getDefaultParticleTemplate() const
Get a reference to the default particle template
[more]inline void setDefaultParticleTemplate(const Particle &p)
Set the default particle template (particle is copied)
[more]inline bool getFreezeOnCull() const
Get whether the particle system can freeze when culled
[more]inline void setFreezeOnCull(bool v)
Set whether the particle system can freeze when culled (default is true)
[more]inline int getLevelOfDetail() const
(EXPERIMENTAL) Get the level of detail
[more]inline void setLevelOfDetail(int v)
(EXPERIMENTAL) Set the level of detail.
[more]inline Particle* createParticle(const Particle* ptemplate)

Public Members

[more]enum Alignment

Protected Methods

[more]virtual ~ParticleSystem()
[more]ParticleSystem& operator=(const ParticleSystem &)
[more]inline virtual bool computeBound() const
[more]virtual void drawImplementation(osg::State &state) const
[more]void single_pass_render(osg::State &state, const osg::Matrix &modelview) const


Documentation

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).
oenum Alignment

o BILLBOARD

o FIXED

o ParticleSystem()

o ParticleSystem(const ParticleSystem &copy, const osg::CopyOp &copyop = osg::CopyOp::SHALLOW_COPY)

o META_Object(osgParticle, ParticleSystem)

oinline Alignment getParticleAlignment() const
Get the alignment type of particles

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

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

ovoid 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.

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

ovirtual ~ParticleSystem()

oParticleSystem& operator=(const ParticleSystem &)

oinline virtual bool computeBound() const

ovirtual void drawImplementation(osg::State &state) const

ovoid single_pass_render(osg::State &state, const osg::Matrix &modelview) const

oinline ParticleSystem::Alignment getParticleAlignment() const

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

oinline const osg::Vec3& getAlignVectorX() const
Get the X-axis alignment vector

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

oinline const osg::Vec3& getAlignVectorY() const
Get the Y-axis alignment vector

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

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

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

oinline void setFrozen(bool v)
Set or reset the frozen state. When the particle system is frozen, emitters and programs won't do anything on it.

oinline const osg::BoundingBox& getDefaultBoundingBox() const
Get the default bounding box

oinline void setDefaultBoundingBox(const osg::BoundingBox &bbox)
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.

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

oinline void setDoublePassRendering(bool v)
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 after 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.

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

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

oinline Particle* getParticle(int i)
Get a pointer to the i-th particle

oinline const Particle* getParticle(int i) const
Get a const pointer to the i-th particle

oinline void destroyParticle(int i)

oinline int getLastFrameNumber() const
Get the last frame number

oinline bool computeBound() const

oinline void update_bounds(const osg::Vec3 &p, float r)

oinline const Particle& getDefaultParticleTemplate() const
Get a reference to the default particle template

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

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

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

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

oinline void setLevelOfDetail(int v)
(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.

oinline Particle* createParticle(const Particle* ptemplate)


This class has no child classes.

Alphabetic index HTML hierarchy of classes or Java



This page was generated with the help of DOC++.