|
Public Types |
enum | Alignment { BILLBOARD,
FIXED
} |
Public Member Functions |
| ParticleSystem () |
| ParticleSystem (const ParticleSystem ©, const osg::CopyOp ©op=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::Vec3 & | getAlignVectorX () const |
| Get the X-axis alignment vector.
|
void | setAlignVectorX (const osg::Vec3 &v) |
| Set the X-axis alignment vector.
|
const osg::Vec3 & | getAlignVectorY () 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::BoundingBox & | getDefaultBoundingBox () 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.
|
bool | areAllParticlesDead () const |
| Get whether all particles are dead.
|
Particle * | getParticle (int i) |
| Get a pointer to the i-th particle.
|
const Particle * | getParticle (int i) const |
| Get a const pointer to the i-th particle.
|
virtual Particle * | createParticle (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.
|
virtual void | reuseParticle (int i) |
| Reuse the i-th particle.
|
int | getLastFrameNumber () const |
| Get the last frame number.
|
Particle & | getDefaultParticleTemplate () |
| Get a reference to the default particle template.
|
const Particle & | getDefaultParticleTemplate () const |
| Get a const 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.
|
virtual void | drawImplementation (osg::State &state) const |
| drawImplementation(State&) is a pure virtaul method for the actual implementation of OpenGL drawing calls, such as vertex arrays and primitives, that must be implemented in concrete subclasses of the Drawable base class, examples include osg::Geometry and osg::ShapeDrawable.
|
virtual osg::BoundingBox | computeBound () const |
| Compute the bounding box around Drawables's geometry.
|
Protected Types |
typedef std::vector< Particle > | Particle_vector |
typedef std::stack< Particle * > | Death_stack |
Protected Member Functions |
virtual | ~ParticleSystem () |
ParticleSystem & | operator= (const ParticleSystem &) |
void | update_bounds (const osg::Vec3 &p, float r) |
void | single_pass_render (osg::State &state, const osg::Matrix &modelview) const |
Protected Attributes |
Particle_vector | _particles |
Death_stack | _deadparts |
osg::BoundingBox | _def_bbox |
Alignment | _alignment |
osg::Vec3 | _align_X_axis |
osg::Vec3 | _align_Y_axis |
bool | _doublepass |
bool | _frozen |
osg::Vec3 | _bmin |
osg::Vec3 | _bmax |
bool | _reset_bounds_flag |
bool | _bounds_computed |
Particle | _def_ptemp |
int | _last_frame |
bool | _freeze_on_cull |
int | _detail |
int | _draw_count |
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).