14 #ifndef OSGPARTICLE_PARTICLEEFFECT
15 #define OSGPARTICLE_PARTICLEEFFECT
17 #include <osgParticle/Emitter>
18 #include <osgParticle/Program>
28 _automaticSetup(automaticSetup),
29 _useLocalParticleSystem(true),
33 _emitterDuration(1.0),
40 virtual const char*
libraryName()
const {
return "osgParticle"; }
41 virtual const char*
className()
const {
return "ParticleEffect"; }
48 void setUseLocalParticleSystem(
bool local);
51 void setTextureFileName(
const std::string& filename);
54 void setDefaultParticleTemplate(
const Particle& p);
57 void setPosition(
const osg::Vec3& position);
60 void setScale(
float scale);
63 void setIntensity(
float intensity);
66 void setStartTime(
double startTime);
69 void setEmitterDuration(
double duration);
72 void setParticleDuration(
double duration);
79 bool areAllParticlesDead()
const {
return _particleSystem.valid()?_particleSystem->areAllParticlesDead():
true; }
81 virtual Emitter* getEmitter() = 0;
82 virtual const Emitter* getEmitter()
const = 0;
84 virtual Program* getProgram() = 0;
85 virtual const Program* getProgram()
const = 0;
91 virtual void setDefaults();
93 virtual void setUpEmitterAndProgram() = 0;
95 virtual void buildEffect();
double getEmitterDuration() const
bool areAllParticlesDead() const
Get whether all particles are dead.
ParticleSystem * getParticleSystem()
const Particle & getDefaultParticleTemplate() const
bool getUseLocalParticleSystem() const
const osg::Vec3 & getPosition() const
void setAutomaticSetup(bool flag)
bool validNodeMask(const osg::Node &node) const
float getIntensity() const
const std::string & getTextureFileName() const
bool _useLocalParticleSystem
virtual void accept(osg::NodeVisitor &nv)
std::string _textureFileName
const osg::Vec3 & getWind() const
double getParticleDuration() const
#define OSGPARTICLE_EXPORT
bool getAutomaticSetup() const
ParticleEffect(bool automaticSetup=true)
osg::ref_ptr< ParticleSystem > _particleSystem
const ParticleSystem * getParticleSystem() const
virtual void apply(Drawable &drawable)
virtual const char * libraryName() const
Particle _defaultParticleTemplate
virtual ~ParticleEffect()
void pushOntoNodePath(Node *node)
virtual const char * className() const
double getStartTime() const
virtual bool isSameKindAs(const osg::Object *obj) const