VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtParticleEffect.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2018 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include <vrvOsg/vrvOsg.h>
12 #include <osg/MatrixTransform>
13 #include <osg/Geode>
14 #include <osg/Sequence>
15 
16 #include <boost/unordered_map.hpp>
17 
18 namespace osgParticle
19 {
20  class ParticleSystem;
21 }
22 
23 namespace makVrv
24 {
25  class DtImprovedModularEmitter;
26 
31  class DT_DLL_VRVOSG DtParticleEffect : public osg::MatrixTransform
32  {
33  public:
36 
37  //@ {
40  virtual const char* libraryName() const;
41 
43  virtual const char* className() const;
44 
46  virtual bool isSameKindAs(const osg::Object* obj) const;
47 
48  virtual void accept(osg::NodeVisitor& v);
49  //@ }
50 
52  virtual osg::Group* emitterGroup();
53 
55  virtual osg::Group* programGroup();
56 
58  virtual osg::Group* proxyGroup();
59 
62  virtual osg::Group* transformGroup();
63 
65  virtual void setUpEmittersAndPrograms() = 0;
66 
68  virtual void buildEffect();
69 
71  virtual bool useLocalParticleSystem();
72 
75  virtual void setUseLocalParticleSystem(bool b);
76 
78  virtual float scale() const;
79 
83  virtual void setScale(float scale);
84 
86  virtual float intensity();
87 
90  virtual void setIntensity(float intensity);
91 
93  virtual double startTime();
94 
96  virtual void setStartTime(double startTime);
97 
99  virtual double emitterDuration();
100 
104  virtual void setEmitterDuration(double emitterDuration);
105 
108  virtual double particleLifetime();
109 
111  void setMaxParticlesToEmit(int max);
112 
114  int maxParticlesToEmit();
115 
117  virtual osg::Vec3 wind() const;
118 
120  virtual void setWind(const osg::Vec3& wind);
121 
126  virtual void setGroundDist(float groundDist);
127 
130  virtual float groundDist();
131 
137  virtual void setIsRotorWash(bool isRotorWash);
138 
142  virtual bool isRotorWash();
143 
146  virtual void setRotorDiameter(double diameter);
147 
150  virtual double rotorDiameter() const;
151 
154  virtual void setRotorWindSpeed(double speed);
155 
158  virtual double rotorWindSpeed() const;
159 
161  virtual osg::Vec3 up() const;
162 
164  virtual void setUp(const osg::Vec3& up);
165 
167  virtual void stop();
168 
170  virtual void start();
171 
173  virtual void pause();
174 
176  virtual void resume();
177 
179  virtual void setLoopMode(bool loopOn);
180 
182  virtual void setReverseAnimation(bool reverse);
183 
185  virtual void traverse(osg::NodeVisitor& nv);
186 
188  virtual osg::Node* particleSystemNode();
189 
192  virtual osg::Geode* particleSystemGeode();
193 
197  virtual void setMatrix(const osg::Matrix& mat);
198 
201  void getSizeRange( osgParticle::ParticleSystem* particleSystem, float& min,
202  float& max ) const;
203 
204  protected:
205 
207  virtual void addParent(osg::Group* parent);
208 
211  virtual void setupParticleScalingDefaults( osgParticle::ParticleSystem* ps );
212 
214  virtual void setupParticleLightingDefaults( osgParticle::ParticleSystem* ps );
215 
219  virtual void scaleDefaultParticleSizes( float scale );
220 
222  virtual ~DtParticleEffect();
223 
225  DtParticleEffect(const DtParticleEffect& copy, const osg::CopyOp& copyop);
226 
227  protected:
228 
234 
235  std::vector<osg::ref_ptr<osg::Sequence> > mySequences;
238 
241 
243  osg::Vec3 myPosition;
244  float myScale;
245  float myIntensity;
246  double myStartTime;
249  osg::Vec3 myWind;
250  osg::Vec3 myUp;
255 
257  {
258  float myMinSize;
259  float myMaxSize;
260  };
261 
262  typedef boost::unordered_map<osgParticle::ParticleSystem*,DefaultParticleParameters> ParticleParametersMap;
263 
265  };
266 }
osg::ref_ptr< osg::Group > myTransformGroup
Definition: DtParticleEffect.h:233
osg::Vec3 myWind
Definition: DtParticleEffect.h:249
bool myTransformsSet
Definition: DtParticleEffect.h:240
DT_DLL_tdbutil void ps(int indent_level)
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
bool myIsRotorWash
Definition: DtParticleEffect.h:252
bool mySequencesReverse
Definition: DtParticleEffect.h:237
float myGroundDist
Definition: DtParticleEffect.h:251
int myMaxParticlesToEmit
Definition: DtParticleEffect.h:248
float myRotorDiameter
Definition: DtParticleEffect.h:253
boost::unordered_map< osgParticle::ParticleSystem *, DefaultParticleParameters > ParticleParametersMap
Definition: DtParticleEffect.h:262
bool mySequencesLooping
Definition: DtParticleEffect.h:236
Definition: DtParticleEffect.h:256
osg::ref_ptr< osg::Group > myEmitterGroup
Definition: DtParticleEffect.h:229
osg::Vec3 myPosition
Definition: DtParticleEffect.h:243
float myMinSize
Definition: DtParticleEffect.h:258
osg::Vec3 myUp
Definition: DtParticleEffect.h:250
bool myUseLocalParticleSystem
Definition: DtParticleEffect.h:242
This class provides a facade around the osgParticle class hierarchy.
Definition: DtParticleEffect.h:31
osg::ref_ptr< osg::Group > myProxyGroup
Definition: DtParticleEffect.h:232
osg::ref_ptr< osg::Group > myProgramGroup
Definition: DtParticleEffect.h:230
double myEmitterDuration
Definition: DtParticleEffect.h:247
osg::ref_ptr< osg::Geode > myParticleSystemGeode
Definition: DtParticleEffect.h:231
float myRotorWindSpeed
Definition: DtParticleEffect.h:254
float myIntensity
Definition: DtParticleEffect.h:245
float myScale
Definition: DtParticleEffect.h:244
double myStartTime
Definition: DtParticleEffect.h:246
Contains DLL export macros.
ParticleParametersMap myDefaultParticleParameters
Definition: DtParticleEffect.h:264
osg::ref_ptr< osg::MatrixTransform > myParticleSystemTransform
Definition: DtParticleEffect.h:239
std::vector< osg::ref_ptr< osg::Sequence > > mySequences
Definition: DtParticleEffect.h:235
float myMaxSize
Definition: DtParticleEffect.h:259

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)