RTFX  0.3
Real time special effects collaborative visualization and production library.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
RTFXParticleSystem.h
1 #ifndef __RTFX_PARTICLESYSTEM__
2 #define __RTFX_PARTICLESYSTEM__
3 /*
4  \file RTFXParticleSystem
5  \brief Contains the definition of the RTFXParticleSystem class
6 
7  \author Lesley Northam
8 
9  January 2013
10 */
11 
12 
13 #include <iostream>
14 #include <sstream>
15 #include "RTFXObject.h"
16 
17 namespace RTFX
18 {
24  class RTFXAPI RTFXParticleSystem : public RTFXObject
25  {
26  public:
29 
31  RTFXParticleSystem( bool _genID );
32 
35 
38 
40  void SetPosition( Point3D _p );
41 
43  void SetPosition( double _x, double _y, double _z );
44 
46  Point3D GetPosition();
47 
49  double * GetPositionAsDoubles();
50 
52  void SetRotation( Point3D _p );
53 
55  void SetRotation( double _x, double _y, double _z );
56 
58  Point3D GetRotation();
59 
61  double * GetRotationAsDoubles();
62 
64  void SetScale( Point3D _p );
65 
67  void SetScale( double _x, double _y, double _z );
68 
70  Point3D GetScale();
71 
73  double * GetScaleAsDoubles();
74 
76  void SetTransform( Matrix4x4 _m );
77 
79  void SetTransform( double * _m );
80 
82  Matrix4x4 GetTransform();
83 
85  double * GetTransformAsDoubles();
86 
88  double GetParticlesEmittedPerTimeUnit();
89 
91  double GetParticlesEmittedPerTimeUnitVariance();
92 
94  double GetParticleLifeTime();
95 
97  double GetParticleLifeTimeVariance();
98 
100  Point3D GetParticleVelocity();
101 
103  double * GetPartcleVelocityAsDoubles();
104 
106  void SetParticlesEmittedPerTimeUnit( double _value );
107 
109  void SetParticlesEmittedPerTimeUnitVariance( double _value );
110 
112  void SetParticleLifeTime( double _value );
113 
115  void SetParticleLifeTimeVariance( double _value );
116 
118  void SetParticleVelocity( double _x, double _y, double _z );
119 
121  void SetParticleVelocity( Point3D _value );
122 
126  void Update( RTFXObject * _psys );
127 
129  void ToNative( AXISFRAME _frame );
130 
132  void FromNative( AXISFRAME _frame );
133 
135  void ChangeFrame( AXISFRAME _from, AXISFRAME _to );
136 
137  private:
138 
140  void Init( bool _genID );
141 
142  friend class boost::serialization::access;
143  template<class Archive>
144  void serialize( Archive &_ar, const unsigned int _version )
145  {
146  _ar & boost::serialization::base_object<RTFXObject>( *this );
147  }
148  };
149 }
150 BOOST_CLASS_EXPORT_KEY( RTFX::RTFXParticleSystem )
151 
152 #endif