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()
const;
114 virtual void setWind(
const osg::Vec3 wind);
117 virtual osg::Vec3 up()
const;
120 virtual void setUp(
const osg::Vec3 up);
126 virtual void start();
129 virtual void pause();
132 virtual void resume();
135 virtual void setLoopMode(
bool loopOn);
138 virtual void setReverseAnimation(
bool reverse);
141 virtual void traverse(osg::NodeVisitor& nv);
144 virtual osg::Node* particleSystemNode();
148 virtual osg::Geode* particleSystemGeode();
153 virtual void setMatrix(
const osg::Matrix& mat);
157 void getSizeRange( osgParticle::ParticleSystem* particleSystem,
float& min,
163 virtual void addParent(osg::Group* parent);
167 virtual void setupParticleScalingDefaults( osgParticle::ParticleSystem* ps );
170 virtual void setupParticleLightingDefaults( osgParticle::ParticleSystem* ps );
175 virtual void scaleDefaultParticleSizes(
float scale );