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 void setMaxParticlesToEmit(
int max);
114 int maxParticlesToEmit();
117 virtual osg::Vec3 wind()
const;
120 virtual void setWind(
const osg::Vec3& wind);
123 virtual osg::Vec3 up()
const;
126 virtual void setUp(
const osg::Vec3& up);
132 virtual void start();
135 virtual void pause();
138 virtual void resume();
141 virtual void setLoopMode(
bool loopOn);
144 virtual void setReverseAnimation(
bool reverse);
147 virtual void traverse(osg::NodeVisitor& nv);
150 virtual osg::Node* particleSystemNode();
154 virtual osg::Geode* particleSystemGeode();
159 virtual void setMatrix(
const osg::Matrix& mat);
163 void getSizeRange( osgParticle::ParticleSystem* particleSystem,
float& min,
169 virtual void setIgnoreModelScaling(
bool ignoreModelScaling);
174 virtual bool ignoreModelScaling();
179 virtual void addParent(osg::Group* parent);
183 virtual void setupParticleScalingDefaults( osgParticle::ParticleSystem*
ps );
186 virtual void setupParticleLightingDefaults( osgParticle::ParticleSystem* ps );
191 virtual void scaleDefaultParticleSizes(
float scale );