## 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

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

### Public Members

enum Alignment

### Protected Methods

virtual ~ParticleSystem()
ParticleSystem& operator=(const ParticleSystem &)
inline virtual bool computeBound() const
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).

`enum Alignment`

`BILLBOARD`

`FIXED`

`ParticleSystem()`

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

`META_Object(osgParticle, ParticleSystem)`

`inline Alignment getParticleAlignment() const`
  Get the alignment type of particles

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

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

`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. If `texturefile` is empty, then texturing is turned off.

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

`virtual void drawImplementation(osg::State &state) const`

`virtual ~ParticleSystem()`

`ParticleSystem& operator=(const ParticleSystem &)`

`inline virtual bool computeBound() const`

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

`inline ParticleSystem::Alignment getParticleAlignment() const`

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

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

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

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

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

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

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

`inline 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.

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

`inline 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.

`inline bool getDoublePassRendering() const`
  Get the double pass rendering flag

`inline 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.

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

`inline int numDeadParticles() const`
  Get the number of dead particles

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

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

`inline void destroyParticle(int i)`

`inline int getLastFrameNumber() const`
  Get the last frame number

`inline bool computeBound() const`

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

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

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

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

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

`inline int getLevelOfDetail() const`
  (EXPERIMENTAL) Get the level of detail

`inline 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.

`inline 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++.