12 #include <osg/MatrixTransform>
14 #include <osg/Sequence>
16 #include <boost/unordered_map.hpp>
25 class DtImprovedModularEmitter;
40 virtual const char* libraryName()
const;
43 virtual const char* className()
const;
46 virtual bool isSameKindAs(
const osg::Object* obj)
const;
48 virtual void accept(osg::NodeVisitor& v);
52 virtual osg::Group* emitterGroup();
55 virtual osg::Group* programGroup();
58 virtual osg::Group* proxyGroup();
62 virtual osg::Group* transformGroup();
65 virtual void setUpEmittersAndPrograms() = 0;
68 virtual void buildEffect();
71 virtual bool useLocalParticleSystem();
75 virtual void setUseLocalParticleSystem(
bool b);
78 virtual float scale();
83 virtual void setScale(
float scale);
86 virtual float intensity();
90 virtual void setIntensity(
float intensity);
93 virtual double startTime();
96 virtual void setStartTime(
double startTime);
99 virtual double emitterDuration();
104 virtual void setEmitterDuration(
double emitterDuration);
108 virtual double particleLifetime();
111 virtual osg::Vec3 wind();
115 virtual void setWind(
const osg::Vec3 wind);
121 virtual void start();
124 virtual void pause();
127 virtual void resume();
130 virtual void setLoopMode(
bool loopOn);
133 virtual void setReverseAnimation(
bool reverse);
136 virtual void traverse(osg::NodeVisitor& nv);
139 virtual osg::Node* particleSystemNode();
143 virtual osg::Geode* particleSystemGeode();
148 virtual void setMatrix(
const osg::Matrix& mat);
152 void getSizeRange( osgParticle::ParticleSystem* particleSystem,
float& min,
158 virtual void addParent(osg::Group* parent);
162 virtual void setupParticleScalingDefaults( osgParticle::ParticleSystem* ps );
167 virtual void scaleDefaultParticleSizes(
float scale );