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 Classes
-
enum Alignment
Public Methods
-
ParticleSystem()
-
ParticleSystem(const ParticleSystem ©, const osg::CopyOp ©op = 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)
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 ©, const osg::CopyOp ©op = 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++.