VR-Forces 4.7 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();
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 
123  virtual osg::Vec3 up() const;
124 
126  virtual void setUp(const osg::Vec3& up);
127 
129  virtual void stop();
130 
132  virtual void start();
133 
135  virtual void pause();
136 
138  virtual void resume();
139 
141  virtual void setLoopMode(bool loopOn);
142 
144  virtual void setReverseAnimation(bool reverse);
145 
147  virtual void traverse(osg::NodeVisitor& nv);
148 
150  virtual osg::Node* particleSystemNode();
151 
154  virtual osg::Geode* particleSystemGeode();
155 
159  virtual void setMatrix(const osg::Matrix& mat);
160 
163  void getSizeRange( osgParticle::ParticleSystem* particleSystem, float& min,
164  float& max ) const;
165 
169  virtual void setIgnoreModelScaling(bool ignoreModelScaling);
170 
174  virtual bool ignoreModelScaling();
175 
176  protected:
177 
179  virtual void addParent(osg::Group* parent);
180 
183  virtual void setupParticleScalingDefaults( osgParticle::ParticleSystem* ps );
184 
186  virtual void setupParticleLightingDefaults( osgParticle::ParticleSystem* ps );
187 
191  virtual void scaleDefaultParticleSizes( float scale );
192 
194  virtual ~DtParticleEffect();
195 
197  DtParticleEffect(const DtParticleEffect& copy, const osg::CopyOp& copyop);
198 
199  protected:
200 
201  osg::ref_ptr<osg::Group> myEmitterGroup;
202  osg::ref_ptr<osg::Group> myProgramGroup;
203  osg::ref_ptr<osg::Geode> myParticleSystemGeode;
204  osg::ref_ptr<osg::Group> myProxyGroup;
205  osg::ref_ptr<osg::Group> myTransformGroup;
206 
207  std::vector<osg::ref_ptr<osg::Sequence> > mySequences;
210 
211  osg::ref_ptr<osg::MatrixTransform> myParticleSystemTransform;
213 
215  osg::Vec3 myPosition;
216  float myScale;
217  float myIntensity;
218  double myStartTime;
221  osg::Vec3 myWind;
222  osg::Vec3 myUp;
223 
225  {
226  float myMinSize;
227  float myMaxSize;
228  };
229 
230  typedef boost::unordered_map<osgParticle::ParticleSystem*,DefaultParticleParameters> ParticleParametersMap;
231 
234  };
235 }

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)