aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/irrlicht-1.8/include/IParticleSystemSceneNode.h
diff options
context:
space:
mode:
authorDavid Walter Seikel2013-01-13 18:54:10 +1000
committerDavid Walter Seikel2013-01-13 18:54:10 +1000
commit959831f4ef5a3e797f576c3de08cd65032c997ad (patch)
treee7351908be5995f0b325b2ebeaa02d5a34b82583 /libraries/irrlicht-1.8/include/IParticleSystemSceneNode.h
parentAdd info about changes to Irrlicht. (diff)
downloadSledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.zip
SledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.tar.gz
SledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.tar.bz2
SledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.tar.xz
Remove damned ancient DOS line endings from Irrlicht. Hopefully I did not go overboard.
Diffstat (limited to '')
-rw-r--r--libraries/irrlicht-1.8/include/IParticleSystemSceneNode.h1024
1 files changed, 512 insertions, 512 deletions
diff --git a/libraries/irrlicht-1.8/include/IParticleSystemSceneNode.h b/libraries/irrlicht-1.8/include/IParticleSystemSceneNode.h
index adb2050..56a47c8 100644
--- a/libraries/irrlicht-1.8/include/IParticleSystemSceneNode.h
+++ b/libraries/irrlicht-1.8/include/IParticleSystemSceneNode.h
@@ -1,512 +1,512 @@
1// Copyright (C) 2002-2012 Nikolaus Gebhardt 1// Copyright (C) 2002-2012 Nikolaus Gebhardt
2// This file is part of the "Irrlicht Engine". 2// This file is part of the "Irrlicht Engine".
3// For conditions of distribution and use, see copyright notice in irrlicht.h 3// For conditions of distribution and use, see copyright notice in irrlicht.h
4 4
5#ifndef __I_PARTICLE_SYSTEM_SCENE_NODE_H_INCLUDED__ 5#ifndef __I_PARTICLE_SYSTEM_SCENE_NODE_H_INCLUDED__
6#define __I_PARTICLE_SYSTEM_SCENE_NODE_H_INCLUDED__ 6#define __I_PARTICLE_SYSTEM_SCENE_NODE_H_INCLUDED__
7 7
8#include "ISceneNode.h" 8#include "ISceneNode.h"
9#include "IParticleAnimatedMeshSceneNodeEmitter.h" 9#include "IParticleAnimatedMeshSceneNodeEmitter.h"
10#include "IParticleBoxEmitter.h" 10#include "IParticleBoxEmitter.h"
11#include "IParticleCylinderEmitter.h" 11#include "IParticleCylinderEmitter.h"
12#include "IParticleMeshEmitter.h" 12#include "IParticleMeshEmitter.h"
13#include "IParticleRingEmitter.h" 13#include "IParticleRingEmitter.h"
14#include "IParticleSphereEmitter.h" 14#include "IParticleSphereEmitter.h"
15#include "IParticleAttractionAffector.h" 15#include "IParticleAttractionAffector.h"
16#include "IParticleFadeOutAffector.h" 16#include "IParticleFadeOutAffector.h"
17#include "IParticleGravityAffector.h" 17#include "IParticleGravityAffector.h"
18#include "IParticleRotationAffector.h" 18#include "IParticleRotationAffector.h"
19#include "dimension2d.h" 19#include "dimension2d.h"
20 20
21namespace irr 21namespace irr
22{ 22{
23namespace scene 23namespace scene
24{ 24{
25 25
26//! A particle system scene node for creating snow, fire, exlosions, smoke... 26//! A particle system scene node for creating snow, fire, exlosions, smoke...
27/** A scene node controlling a particle System. The behavior of the particles 27/** A scene node controlling a particle System. The behavior of the particles
28can be controlled by setting the right particle emitters and affectors. 28can be controlled by setting the right particle emitters and affectors.
29You can for example easily create a campfire by doing this: 29You can for example easily create a campfire by doing this:
30 30
31\code 31\code
32 scene::IParticleSystemSceneNode* p = scenemgr->addParticleSystemSceneNode(); 32 scene::IParticleSystemSceneNode* p = scenemgr->addParticleSystemSceneNode();
33 p->setParticleSize(core::dimension2d<f32>(20.0f, 10.0f)); 33 p->setParticleSize(core::dimension2d<f32>(20.0f, 10.0f));
34 scene::IParticleEmitter* em = p->createBoxEmitter( 34 scene::IParticleEmitter* em = p->createBoxEmitter(
35 core::aabbox3d<f32>(-5,0,-5,5,1,5), 35 core::aabbox3d<f32>(-5,0,-5,5,1,5),
36 core::vector3df(0.0f,0.03f,0.0f), 36 core::vector3df(0.0f,0.03f,0.0f),
37 40,80, video::SColor(0,255,255,255),video::SColor(0,255,255,255), 1100,2000); 37 40,80, video::SColor(0,255,255,255),video::SColor(0,255,255,255), 1100,2000);
38 p->setEmitter(em); 38 p->setEmitter(em);
39 em->drop(); 39 em->drop();
40 scene::IParticleAffector* paf = p->createFadeOutParticleAffector(); 40 scene::IParticleAffector* paf = p->createFadeOutParticleAffector();
41 p->addAffector(paf); 41 p->addAffector(paf);
42 paf->drop(); 42 paf->drop();
43\endcode 43\endcode
44 44
45*/ 45*/
46class IParticleSystemSceneNode : public ISceneNode 46class IParticleSystemSceneNode : public ISceneNode
47{ 47{
48public: 48public:
49 49
50 //! Constructor 50 //! Constructor
51 IParticleSystemSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id, 51 IParticleSystemSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id,
52 const core::vector3df& position = core::vector3df(0,0,0), 52 const core::vector3df& position = core::vector3df(0,0,0),
53 const core::vector3df& rotation = core::vector3df(0,0,0), 53 const core::vector3df& rotation = core::vector3df(0,0,0),
54 const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) 54 const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f))
55 : ISceneNode(parent, mgr, id, position, rotation, scale) {} 55 : ISceneNode(parent, mgr, id, position, rotation, scale) {}
56 56
57 //! Sets the size of all particles. 57 //! Sets the size of all particles.
58 virtual void setParticleSize( 58 virtual void setParticleSize(
59 const core::dimension2d<f32> &size = core::dimension2d<f32>(5.0f, 5.0f)) = 0; 59 const core::dimension2d<f32> &size = core::dimension2d<f32>(5.0f, 5.0f)) = 0;
60 60
61 //! Sets if the particles should be global. 61 //! Sets if the particles should be global.
62 /** If they are, the particles are affected by the movement of the 62 /** If they are, the particles are affected by the movement of the
63 particle system scene node too, otherwise they completely ignore it. 63 particle system scene node too, otherwise they completely ignore it.
64 Default is true. */ 64 Default is true. */
65 virtual void setParticlesAreGlobal(bool global=true) = 0; 65 virtual void setParticlesAreGlobal(bool global=true) = 0;
66 66
67 //! Remove all currently visible particles 67 //! Remove all currently visible particles
68 virtual void clearParticles() = 0; 68 virtual void clearParticles() = 0;
69 69
70 //! Do manually update the particles. 70 //! Do manually update the particles.
71 //! This should only be called when you want to render the node outside the scenegraph, 71 //! This should only be called when you want to render the node outside the scenegraph,
72 //! as the node will care about this otherwise automatically. 72 //! as the node will care about this otherwise automatically.
73 virtual void doParticleSystem(u32 time) = 0; 73 virtual void doParticleSystem(u32 time) = 0;
74 74
75 //! Gets the particle emitter, which creates the particles. 75 //! Gets the particle emitter, which creates the particles.
76 /** \return The particle emitter. Can be 0 if none is set. */ 76 /** \return The particle emitter. Can be 0 if none is set. */
77 virtual IParticleEmitter* getEmitter() =0; 77 virtual IParticleEmitter* getEmitter() =0;
78 78
79 //! Sets the particle emitter, which creates the particles. 79 //! Sets the particle emitter, which creates the particles.
80 /** A particle emitter can be created using one of the createEmitter 80 /** A particle emitter can be created using one of the createEmitter
81 methods. For example to create and use a simple PointEmitter, call 81 methods. For example to create and use a simple PointEmitter, call
82 IParticleEmitter* p = createPointEmitter(); setEmitter(p); p->drop(); 82 IParticleEmitter* p = createPointEmitter(); setEmitter(p); p->drop();
83 \param emitter: Sets the particle emitter. You can set this to 0 for 83 \param emitter: Sets the particle emitter. You can set this to 0 for
84 removing the current emitter and stopping the particle system emitting 84 removing the current emitter and stopping the particle system emitting
85 new particles. */ 85 new particles. */
86 virtual void setEmitter(IParticleEmitter* emitter) = 0; 86 virtual void setEmitter(IParticleEmitter* emitter) = 0;
87 87
88 //! Adds new particle effector to the particle system. 88 //! Adds new particle effector to the particle system.
89 /** A particle affector modifies the particles. For example, the FadeOut 89 /** A particle affector modifies the particles. For example, the FadeOut
90 affector lets all particles fade out after some time. It is created and 90 affector lets all particles fade out after some time. It is created and
91 used in this way: 91 used in this way:
92 \code 92 \code
93 IParticleAffector* p = createFadeOutParticleAffector(); 93 IParticleAffector* p = createFadeOutParticleAffector();
94 addAffector(p); 94 addAffector(p);
95 p->drop(); 95 p->drop();
96 \endcode 96 \endcode
97 Please note that an affector is not necessary for the particle system to 97 Please note that an affector is not necessary for the particle system to
98 work. 98 work.
99 \param affector: New affector. */ 99 \param affector: New affector. */
100 virtual void addAffector(IParticleAffector* affector) = 0; 100 virtual void addAffector(IParticleAffector* affector) = 0;
101 101
102 //! Get a list of all particle affectors. 102 //! Get a list of all particle affectors.
103 /** \return The list of particle affectors attached to this node. */ 103 /** \return The list of particle affectors attached to this node. */
104 virtual const core::list<IParticleAffector*>& getAffectors() const = 0; 104 virtual const core::list<IParticleAffector*>& getAffectors() const = 0;
105 105
106 //! Removes all particle affectors in the particle system. 106 //! Removes all particle affectors in the particle system.
107 virtual void removeAllAffectors() = 0; 107 virtual void removeAllAffectors() = 0;
108 108
109 //! Creates a particle emitter for an animated mesh scene node 109 //! Creates a particle emitter for an animated mesh scene node
110 /** \param node: Pointer to the animated mesh scene node to emit 110 /** \param node: Pointer to the animated mesh scene node to emit
111 particles from 111 particles from
112 \param useNormalDirection: If true, the direction of each particle 112 \param useNormalDirection: If true, the direction of each particle
113 created will be the normal of the vertex that it's emitting from. The 113 created will be the normal of the vertex that it's emitting from. The
114 normal is divided by the normalDirectionModifier parameter, which 114 normal is divided by the normalDirectionModifier parameter, which
115 defaults to 100.0f. 115 defaults to 100.0f.
116 \param direction: Direction and speed of particle emission. 116 \param direction: Direction and speed of particle emission.
117 \param normalDirectionModifier: If the emitter is using the normal 117 \param normalDirectionModifier: If the emitter is using the normal
118 direction then the normal of the vertex that is being emitted from is 118 direction then the normal of the vertex that is being emitted from is
119 divided by this number. 119 divided by this number.
120 \param mbNumber: This allows you to specify a specific meshBuffer for 120 \param mbNumber: This allows you to specify a specific meshBuffer for
121 the IMesh* to emit particles from. The default value is -1, which 121 the IMesh* to emit particles from. The default value is -1, which
122 means a random meshBuffer picked from all of the meshes meshBuffers 122 means a random meshBuffer picked from all of the meshes meshBuffers
123 will be selected to pick a random vertex from. If the value is 0 or 123 will be selected to pick a random vertex from. If the value is 0 or
124 greater, it will only pick random vertices from the meshBuffer 124 greater, it will only pick random vertices from the meshBuffer
125 specified by this value. 125 specified by this value.
126 \param everyMeshVertex: If true, the emitter will emit between min/max 126 \param everyMeshVertex: If true, the emitter will emit between min/max
127 particles every second, for every vertex in the mesh, if false, it will 127 particles every second, for every vertex in the mesh, if false, it will
128 emit between min/max particles from random vertices in the mesh. 128 emit between min/max particles from random vertices in the mesh.
129 \param minParticlesPerSecond: Minimal amount of particles emitted per 129 \param minParticlesPerSecond: Minimal amount of particles emitted per
130 second. 130 second.
131 \param maxParticlesPerSecond: Maximal amount of particles emitted per 131 \param maxParticlesPerSecond: Maximal amount of particles emitted per
132 second. 132 second.
133 \param minStartColor: Minimal initial start color of a particle. The 133 \param minStartColor: Minimal initial start color of a particle. The
134 real color of every particle is calculated as random interpolation 134 real color of every particle is calculated as random interpolation
135 between minStartColor and maxStartColor. 135 between minStartColor and maxStartColor.
136 \param maxStartColor: Maximal initial start color of a particle. The 136 \param maxStartColor: Maximal initial start color of a particle. The
137 real color of every particle is calculated as random interpolation 137 real color of every particle is calculated as random interpolation
138 between minStartColor and maxStartColor. 138 between minStartColor and maxStartColor.
139 \param lifeTimeMin: Minimal lifetime of a particle, in milliseconds. 139 \param lifeTimeMin: Minimal lifetime of a particle, in milliseconds.
140 \param lifeTimeMax: Maximal lifetime of a particle, in milliseconds. 140 \param lifeTimeMax: Maximal lifetime of a particle, in milliseconds.
141 \param maxAngleDegrees: Maximal angle in degrees, the emitting 141 \param maxAngleDegrees: Maximal angle in degrees, the emitting
142 direction of the particle will differ from the original direction. 142 direction of the particle will differ from the original direction.
143 \param minStartSize: Minimal initial start size of a particle. The 143 \param minStartSize: Minimal initial start size of a particle. The
144 real size of every particle is calculated as random interpolation 144 real size of every particle is calculated as random interpolation
145 between minStartSize and maxStartSize. 145 between minStartSize and maxStartSize.
146 \param maxStartSize: Maximal initial start size of a particle. The 146 \param maxStartSize: Maximal initial start size of a particle. The
147 real size of every particle is calculated as random interpolation 147 real size of every particle is calculated as random interpolation
148 between minStartSize and maxStartSize. 148 between minStartSize and maxStartSize.
149 \return Pointer to the created particle emitter. To set this emitter 149 \return Pointer to the created particle emitter. To set this emitter
150 as new emitter of this particle system, just call setEmitter(). Note 150 as new emitter of this particle system, just call setEmitter(). Note
151 that you'll have to drop() the returned pointer, after you don't need 151 that you'll have to drop() the returned pointer, after you don't need
152 it any more, see IReferenceCounted::drop() for more informations. */ 152 it any more, see IReferenceCounted::drop() for more informations. */
153 virtual IParticleAnimatedMeshSceneNodeEmitter* createAnimatedMeshSceneNodeEmitter( 153 virtual IParticleAnimatedMeshSceneNodeEmitter* createAnimatedMeshSceneNodeEmitter(
154 scene::IAnimatedMeshSceneNode* node, bool useNormalDirection = true, 154 scene::IAnimatedMeshSceneNode* node, bool useNormalDirection = true,
155 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f), 155 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
156 f32 normalDirectionModifier = 100.0f, s32 mbNumber = -1, 156 f32 normalDirectionModifier = 100.0f, s32 mbNumber = -1,
157 bool everyMeshVertex = false, 157 bool everyMeshVertex = false,
158 u32 minParticlesPerSecond = 5, u32 maxParticlesPerSecond = 10, 158 u32 minParticlesPerSecond = 5, u32 maxParticlesPerSecond = 10,
159 const video::SColor& minStartColor = video::SColor(255,0,0,0), 159 const video::SColor& minStartColor = video::SColor(255,0,0,0),
160 const video::SColor& maxStartColor = video::SColor(255,255,255,255), 160 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
161 u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000, 161 u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
162 s32 maxAngleDegrees = 0, 162 s32 maxAngleDegrees = 0,
163 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f), 163 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
164 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0; 164 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
165 165
166 //! Creates a box particle emitter. 166 //! Creates a box particle emitter.
167 /** \param box: The box for the emitter. 167 /** \param box: The box for the emitter.
168 \param direction: Direction and speed of particle emission. 168 \param direction: Direction and speed of particle emission.
169 \param minParticlesPerSecond: Minimal amount of particles emitted per 169 \param minParticlesPerSecond: Minimal amount of particles emitted per
170 second. 170 second.
171 \param maxParticlesPerSecond: Maximal amount of particles emitted per 171 \param maxParticlesPerSecond: Maximal amount of particles emitted per
172 second. 172 second.
173 \param minStartColor: Minimal initial start color of a particle. The 173 \param minStartColor: Minimal initial start color of a particle. The
174 real color of every particle is calculated as random interpolation 174 real color of every particle is calculated as random interpolation
175 between minStartColor and maxStartColor. 175 between minStartColor and maxStartColor.
176 \param maxStartColor: Maximal initial start color of a particle. The 176 \param maxStartColor: Maximal initial start color of a particle. The
177 real color of every particle is calculated as random interpolation 177 real color of every particle is calculated as random interpolation
178 between minStartColor and maxStartColor. 178 between minStartColor and maxStartColor.
179 \param lifeTimeMin: Minimal lifetime of a particle, in milliseconds. 179 \param lifeTimeMin: Minimal lifetime of a particle, in milliseconds.
180 \param lifeTimeMax: Maximal lifetime of a particle, in milliseconds. 180 \param lifeTimeMax: Maximal lifetime of a particle, in milliseconds.
181 \param maxAngleDegrees: Maximal angle in degrees, the emitting 181 \param maxAngleDegrees: Maximal angle in degrees, the emitting
182 direction of the particle will differ from the original direction. 182 direction of the particle will differ from the original direction.
183 \param minStartSize: Minimal initial start size of a particle. The 183 \param minStartSize: Minimal initial start size of a particle. The
184 real size of every particle is calculated as random interpolation 184 real size of every particle is calculated as random interpolation
185 between minStartSize and maxStartSize. 185 between minStartSize and maxStartSize.
186 \param maxStartSize: Maximal initial start size of a particle. The 186 \param maxStartSize: Maximal initial start size of a particle. The
187 real size of every particle is calculated as random interpolation 187 real size of every particle is calculated as random interpolation
188 between minStartSize and maxStartSize. 188 between minStartSize and maxStartSize.
189 \return Pointer to the created particle emitter. To set this emitter 189 \return Pointer to the created particle emitter. To set this emitter
190 as new emitter of this particle system, just call setEmitter(). Note 190 as new emitter of this particle system, just call setEmitter(). Note
191 that you'll have to drop() the returned pointer, after you don't need 191 that you'll have to drop() the returned pointer, after you don't need
192 it any more, see IReferenceCounted::drop() for more informations. */ 192 it any more, see IReferenceCounted::drop() for more informations. */
193 virtual IParticleBoxEmitter* createBoxEmitter( 193 virtual IParticleBoxEmitter* createBoxEmitter(
194 const core::aabbox3df& box = core::aabbox3df(-10,28,-10,10,30,10), 194 const core::aabbox3df& box = core::aabbox3df(-10,28,-10,10,30,10),
195 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f), 195 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
196 u32 minParticlesPerSecond = 5, 196 u32 minParticlesPerSecond = 5,
197 u32 maxParticlesPerSecond = 10, 197 u32 maxParticlesPerSecond = 10,
198 const video::SColor& minStartColor = video::SColor(255,0,0,0), 198 const video::SColor& minStartColor = video::SColor(255,0,0,0),
199 const video::SColor& maxStartColor = video::SColor(255,255,255,255), 199 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
200 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000, 200 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
201 s32 maxAngleDegrees=0, 201 s32 maxAngleDegrees=0,
202 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f), 202 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
203 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0; 203 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
204 204
205 //! Creates a particle emitter for emitting from a cylinder 205 //! Creates a particle emitter for emitting from a cylinder
206 /** \param center: The center of the circle at the base of the cylinder 206 /** \param center: The center of the circle at the base of the cylinder
207 \param radius: The thickness of the cylinder 207 \param radius: The thickness of the cylinder
208 \param normal: Direction of the length of the cylinder 208 \param normal: Direction of the length of the cylinder
209 \param length: The length of the the cylinder 209 \param length: The length of the the cylinder
210 \param outlineOnly: Whether or not to put points inside the cylinder or 210 \param outlineOnly: Whether or not to put points inside the cylinder or
211 on the outline only 211 on the outline only
212 \param direction: Direction and speed of particle emission. 212 \param direction: Direction and speed of particle emission.
213 \param minParticlesPerSecond: Minimal amount of particles emitted per 213 \param minParticlesPerSecond: Minimal amount of particles emitted per
214 second. 214 second.
215 \param maxParticlesPerSecond: Maximal amount of particles emitted per 215 \param maxParticlesPerSecond: Maximal amount of particles emitted per
216 second. 216 second.
217 \param minStartColor: Minimal initial start color of a particle. The 217 \param minStartColor: Minimal initial start color of a particle. The
218 real color of every particle is calculated as random interpolation 218 real color of every particle is calculated as random interpolation
219 between minStartColor and maxStartColor. 219 between minStartColor and maxStartColor.
220 \param maxStartColor: Maximal initial start color of a particle. The 220 \param maxStartColor: Maximal initial start color of a particle. The
221 real color of every particle is calculated as random interpolation 221 real color of every particle is calculated as random interpolation
222 between minStartColor and maxStartColor. 222 between minStartColor and maxStartColor.
223 \param lifeTimeMin: Minimal lifetime of a particle, in milliseconds. 223 \param lifeTimeMin: Minimal lifetime of a particle, in milliseconds.
224 \param lifeTimeMax: Maximal lifetime of a particle, in milliseconds. 224 \param lifeTimeMax: Maximal lifetime of a particle, in milliseconds.
225 \param maxAngleDegrees: Maximal angle in degrees, the emitting 225 \param maxAngleDegrees: Maximal angle in degrees, the emitting
226 direction of the particle will differ from the original direction. 226 direction of the particle will differ from the original direction.
227 \param minStartSize: Minimal initial start size of a particle. The 227 \param minStartSize: Minimal initial start size of a particle. The
228 real size of every particle is calculated as random interpolation 228 real size of every particle is calculated as random interpolation
229 between minStartSize and maxStartSize. 229 between minStartSize and maxStartSize.
230 \param maxStartSize: Maximal initial start size of a particle. The 230 \param maxStartSize: Maximal initial start size of a particle. The
231 real size of every particle is calculated as random interpolation 231 real size of every particle is calculated as random interpolation
232 between minStartSize and maxStartSize. 232 between minStartSize and maxStartSize.
233 \return Pointer to the created particle emitter. To set this emitter 233 \return Pointer to the created particle emitter. To set this emitter
234 as new emitter of this particle system, just call setEmitter(). Note 234 as new emitter of this particle system, just call setEmitter(). Note
235 that you'll have to drop() the returned pointer, after you don't need 235 that you'll have to drop() the returned pointer, after you don't need
236 it any more, see IReferenceCounted::drop() for more informations. */ 236 it any more, see IReferenceCounted::drop() for more informations. */
237 virtual IParticleCylinderEmitter* createCylinderEmitter( 237 virtual IParticleCylinderEmitter* createCylinderEmitter(
238 const core::vector3df& center, f32 radius, 238 const core::vector3df& center, f32 radius,
239 const core::vector3df& normal, f32 length, 239 const core::vector3df& normal, f32 length,
240 bool outlineOnly = false, 240 bool outlineOnly = false,
241 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f), 241 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
242 u32 minParticlesPerSecond = 5, u32 maxParticlesPerSecond = 10, 242 u32 minParticlesPerSecond = 5, u32 maxParticlesPerSecond = 10,
243 const video::SColor& minStartColor = video::SColor(255,0,0,0), 243 const video::SColor& minStartColor = video::SColor(255,0,0,0),
244 const video::SColor& maxStartColor = video::SColor(255,255,255,255), 244 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
245 u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000, 245 u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
246 s32 maxAngleDegrees = 0, 246 s32 maxAngleDegrees = 0,
247 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f), 247 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
248 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0; 248 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
249 249
250 //! Creates a mesh particle emitter. 250 //! Creates a mesh particle emitter.
251 /** \param mesh: Pointer to mesh to emit particles from 251 /** \param mesh: Pointer to mesh to emit particles from
252 \param useNormalDirection: If true, the direction of each particle 252 \param useNormalDirection: If true, the direction of each particle
253 created will be the normal of the vertex that it's emitting from. The 253 created will be the normal of the vertex that it's emitting from. The
254 normal is divided by the normalDirectionModifier parameter, which 254 normal is divided by the normalDirectionModifier parameter, which
255 defaults to 100.0f. 255 defaults to 100.0f.
256 \param direction: Direction and speed of particle emission. 256 \param direction: Direction and speed of particle emission.
257 \param normalDirectionModifier: If the emitter is using the normal 257 \param normalDirectionModifier: If the emitter is using the normal
258 direction then the normal of the vertex that is being emitted from is 258 direction then the normal of the vertex that is being emitted from is
259 divided by this number. 259 divided by this number.
260 \param mbNumber: This allows you to specify a specific meshBuffer for 260 \param mbNumber: This allows you to specify a specific meshBuffer for
261 the IMesh* to emit particles from. The default value is -1, which 261 the IMesh* to emit particles from. The default value is -1, which
262 means a random meshBuffer picked from all of the meshes meshBuffers 262 means a random meshBuffer picked from all of the meshes meshBuffers
263 will be selected to pick a random vertex from. If the value is 0 or 263 will be selected to pick a random vertex from. If the value is 0 or
264 greater, it will only pick random vertices from the meshBuffer 264 greater, it will only pick random vertices from the meshBuffer
265 specified by this value. 265 specified by this value.
266 \param everyMeshVertex: If true, the emitter will emit between min/max 266 \param everyMeshVertex: If true, the emitter will emit between min/max
267 particles every second, for every vertex in the mesh, if false, it will 267 particles every second, for every vertex in the mesh, if false, it will
268 emit between min/max particles from random vertices in the mesh. 268 emit between min/max particles from random vertices in the mesh.
269 \param minParticlesPerSecond: Minimal amount of particles emitted per 269 \param minParticlesPerSecond: Minimal amount of particles emitted per
270 second. 270 second.
271 \param maxParticlesPerSecond: Maximal amount of particles emitted per 271 \param maxParticlesPerSecond: Maximal amount of particles emitted per
272 second. 272 second.
273 \param minStartColor: Minimal initial start color of a particle. The 273 \param minStartColor: Minimal initial start color of a particle. The
274 real color of every particle is calculated as random interpolation 274 real color of every particle is calculated as random interpolation
275 between minStartColor and maxStartColor. 275 between minStartColor and maxStartColor.
276 \param maxStartColor: Maximal initial start color of a particle. The 276 \param maxStartColor: Maximal initial start color of a particle. The
277 real color of every particle is calculated as random interpolation 277 real color of every particle is calculated as random interpolation
278 between minStartColor and maxStartColor. 278 between minStartColor and maxStartColor.
279 \param lifeTimeMin: Minimal lifetime of a particle, in milliseconds. 279 \param lifeTimeMin: Minimal lifetime of a particle, in milliseconds.
280 \param lifeTimeMax: Maximal lifetime of a particle, in milliseconds. 280 \param lifeTimeMax: Maximal lifetime of a particle, in milliseconds.
281 \param maxAngleDegrees: Maximal angle in degrees, the emitting 281 \param maxAngleDegrees: Maximal angle in degrees, the emitting
282 direction of the particle will differ from the original direction. 282 direction of the particle will differ from the original direction.
283 \param minStartSize: Minimal initial start size of a particle. The 283 \param minStartSize: Minimal initial start size of a particle. The
284 real size of every particle is calculated as random interpolation 284 real size of every particle is calculated as random interpolation
285 between minStartSize and maxStartSize. 285 between minStartSize and maxStartSize.
286 \param maxStartSize: Maximal initial start size of a particle. The 286 \param maxStartSize: Maximal initial start size of a particle. The
287 real size of every particle is calculated as random interpolation 287 real size of every particle is calculated as random interpolation
288 between minStartSize and maxStartSize. 288 between minStartSize and maxStartSize.
289 \return Pointer to the created particle emitter. To set this emitter 289 \return Pointer to the created particle emitter. To set this emitter
290 as new emitter of this particle system, just call setEmitter(). Note 290 as new emitter of this particle system, just call setEmitter(). Note
291 that you'll have to drop() the returned pointer, after you don't need 291 that you'll have to drop() the returned pointer, after you don't need
292 it any more, see IReferenceCounted::drop() for more informations. */ 292 it any more, see IReferenceCounted::drop() for more informations. */
293 virtual IParticleMeshEmitter* createMeshEmitter( 293 virtual IParticleMeshEmitter* createMeshEmitter(
294 scene::IMesh* mesh, bool useNormalDirection = true, 294 scene::IMesh* mesh, bool useNormalDirection = true,
295 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f), 295 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
296 f32 normalDirectionModifier = 100.0f, s32 mbNumber = -1, 296 f32 normalDirectionModifier = 100.0f, s32 mbNumber = -1,
297 bool everyMeshVertex = false, 297 bool everyMeshVertex = false,
298 u32 minParticlesPerSecond = 5, u32 maxParticlesPerSecond = 10, 298 u32 minParticlesPerSecond = 5, u32 maxParticlesPerSecond = 10,
299 const video::SColor& minStartColor = video::SColor(255,0,0,0), 299 const video::SColor& minStartColor = video::SColor(255,0,0,0),
300 const video::SColor& maxStartColor = video::SColor(255,255,255,255), 300 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
301 u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000, 301 u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
302 s32 maxAngleDegrees = 0, 302 s32 maxAngleDegrees = 0,
303 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f), 303 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
304 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0; 304 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
305 305
306 //! Creates a point particle emitter. 306 //! Creates a point particle emitter.
307 /** \param direction: Direction and speed of particle emission. 307 /** \param direction: Direction and speed of particle emission.
308 \param minParticlesPerSecond: Minimal amount of particles emitted per 308 \param minParticlesPerSecond: Minimal amount of particles emitted per
309 second. 309 second.
310 \param maxParticlesPerSecond: Maximal amount of particles emitted per 310 \param maxParticlesPerSecond: Maximal amount of particles emitted per
311 second. 311 second.
312 \param minStartColor: Minimal initial start color of a particle. The 312 \param minStartColor: Minimal initial start color of a particle. The
313 real color of every particle is calculated as random interpolation 313 real color of every particle is calculated as random interpolation
314 between minStartColor and maxStartColor. 314 between minStartColor and maxStartColor.
315 \param maxStartColor: Maximal initial start color of a particle. The 315 \param maxStartColor: Maximal initial start color of a particle. The
316 real color of every particle is calculated as random interpolation 316 real color of every particle is calculated as random interpolation
317 between minStartColor and maxStartColor. 317 between minStartColor and maxStartColor.
318 \param lifeTimeMin: Minimal lifetime of a particle, in milliseconds. 318 \param lifeTimeMin: Minimal lifetime of a particle, in milliseconds.
319 \param lifeTimeMax: Maximal lifetime of a particle, in milliseconds. 319 \param lifeTimeMax: Maximal lifetime of a particle, in milliseconds.
320 \param maxAngleDegrees: Maximal angle in degrees, the emitting 320 \param maxAngleDegrees: Maximal angle in degrees, the emitting
321 direction of the particle will differ from the original direction. 321 direction of the particle will differ from the original direction.
322 \param minStartSize: Minimal initial start size of a particle. The 322 \param minStartSize: Minimal initial start size of a particle. The
323 real size of every particle is calculated as random interpolation 323 real size of every particle is calculated as random interpolation
324 between minStartSize and maxStartSize. 324 between minStartSize and maxStartSize.
325 \param maxStartSize: Maximal initial start size of a particle. The 325 \param maxStartSize: Maximal initial start size of a particle. The
326 real size of every particle is calculated as random interpolation 326 real size of every particle is calculated as random interpolation
327 between minStartSize and maxStartSize. 327 between minStartSize and maxStartSize.
328 \return Pointer to the created particle emitter. To set this emitter 328 \return Pointer to the created particle emitter. To set this emitter
329 as new emitter of this particle system, just call setEmitter(). Note 329 as new emitter of this particle system, just call setEmitter(). Note
330 that you'll have to drop() the returned pointer, after you don't need 330 that you'll have to drop() the returned pointer, after you don't need
331 it any more, see IReferenceCounted::drop() for more informations. */ 331 it any more, see IReferenceCounted::drop() for more informations. */
332 virtual IParticlePointEmitter* createPointEmitter( 332 virtual IParticlePointEmitter* createPointEmitter(
333 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f), 333 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
334 u32 minParticlesPerSecond = 5, 334 u32 minParticlesPerSecond = 5,
335 u32 maxParticlesPerSecond = 10, 335 u32 maxParticlesPerSecond = 10,
336 const video::SColor& minStartColor = video::SColor(255,0,0,0), 336 const video::SColor& minStartColor = video::SColor(255,0,0,0),
337 const video::SColor& maxStartColor = video::SColor(255,255,255,255), 337 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
338 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000, 338 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
339 s32 maxAngleDegrees=0, 339 s32 maxAngleDegrees=0,
340 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f), 340 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
341 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0; 341 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
342 342
343 //! Creates a ring particle emitter. 343 //! Creates a ring particle emitter.
344 /** \param center: Center of ring 344 /** \param center: Center of ring
345 \param radius: Distance of points from center, points will be rotated 345 \param radius: Distance of points from center, points will be rotated
346 around the Y axis at a random 360 degrees and will then be shifted by 346 around the Y axis at a random 360 degrees and will then be shifted by
347 the provided ringThickness values in each axis. 347 the provided ringThickness values in each axis.
348 \param ringThickness : thickness of the ring or how wide the ring is 348 \param ringThickness : thickness of the ring or how wide the ring is
349 \param direction: Direction and speed of particle emission. 349 \param direction: Direction and speed of particle emission.
350 \param minParticlesPerSecond: Minimal amount of particles emitted per 350 \param minParticlesPerSecond: Minimal amount of particles emitted per
351 second. 351 second.
352 \param maxParticlesPerSecond: Maximal amount of particles emitted per 352 \param maxParticlesPerSecond: Maximal amount of particles emitted per
353 second. 353 second.
354 \param minStartColor: Minimal initial start color of a particle. The 354 \param minStartColor: Minimal initial start color of a particle. The
355 real color of every particle is calculated as random interpolation 355 real color of every particle is calculated as random interpolation
356 between minStartColor and maxStartColor. 356 between minStartColor and maxStartColor.
357 \param maxStartColor: Maximal initial start color of a particle. The 357 \param maxStartColor: Maximal initial start color of a particle. The
358 real color of every particle is calculated as random interpolation 358 real color of every particle is calculated as random interpolation
359 between minStartColor and maxStartColor. 359 between minStartColor and maxStartColor.
360 \param lifeTimeMin: Minimal lifetime of a particle, in milliseconds. 360 \param lifeTimeMin: Minimal lifetime of a particle, in milliseconds.
361 \param lifeTimeMax: Maximal lifetime of a particle, in milliseconds. 361 \param lifeTimeMax: Maximal lifetime of a particle, in milliseconds.
362 \param maxAngleDegrees: Maximal angle in degrees, the emitting 362 \param maxAngleDegrees: Maximal angle in degrees, the emitting
363 direction of the particle will differ from the original direction. 363 direction of the particle will differ from the original direction.
364 \param minStartSize: Minimal initial start size of a particle. The 364 \param minStartSize: Minimal initial start size of a particle. The
365 real size of every particle is calculated as random interpolation 365 real size of every particle is calculated as random interpolation
366 between minStartSize and maxStartSize. 366 between minStartSize and maxStartSize.
367 \param maxStartSize: Maximal initial start size of a particle. The 367 \param maxStartSize: Maximal initial start size of a particle. The
368 real size of every particle is calculated as random interpolation 368 real size of every particle is calculated as random interpolation
369 between minStartSize and maxStartSize. 369 between minStartSize and maxStartSize.
370 \return Pointer to the created particle emitter. To set this emitter 370 \return Pointer to the created particle emitter. To set this emitter
371 as new emitter of this particle system, just call setEmitter(). Note 371 as new emitter of this particle system, just call setEmitter(). Note
372 that you'll have to drop() the returned pointer, after you don't need 372 that you'll have to drop() the returned pointer, after you don't need
373 it any more, see IReferenceCounted::drop() for more informations. */ 373 it any more, see IReferenceCounted::drop() for more informations. */
374 virtual IParticleRingEmitter* createRingEmitter( 374 virtual IParticleRingEmitter* createRingEmitter(
375 const core::vector3df& center, f32 radius, f32 ringThickness, 375 const core::vector3df& center, f32 radius, f32 ringThickness,
376 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f), 376 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
377 u32 minParticlesPerSecond = 5, 377 u32 minParticlesPerSecond = 5,
378 u32 maxParticlesPerSecond = 10, 378 u32 maxParticlesPerSecond = 10,
379 const video::SColor& minStartColor = video::SColor(255,0,0,0), 379 const video::SColor& minStartColor = video::SColor(255,0,0,0),
380 const video::SColor& maxStartColor = video::SColor(255,255,255,255), 380 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
381 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000, 381 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
382 s32 maxAngleDegrees=0, 382 s32 maxAngleDegrees=0,
383 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f), 383 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
384 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0; 384 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
385 385
386 //! Creates a sphere particle emitter. 386 //! Creates a sphere particle emitter.
387 /** \param center: Center of sphere 387 /** \param center: Center of sphere
388 \param radius: Radius of sphere 388 \param radius: Radius of sphere
389 \param direction: Direction and speed of particle emission. 389 \param direction: Direction and speed of particle emission.
390 \param minParticlesPerSecond: Minimal amount of particles emitted per 390 \param minParticlesPerSecond: Minimal amount of particles emitted per
391 second. 391 second.
392 \param maxParticlesPerSecond: Maximal amount of particles emitted per 392 \param maxParticlesPerSecond: Maximal amount of particles emitted per
393 second. 393 second.
394 \param minStartColor: Minimal initial start color of a particle. The 394 \param minStartColor: Minimal initial start color of a particle. The
395 real color of every particle is calculated as random interpolation 395 real color of every particle is calculated as random interpolation
396 between minStartColor and maxStartColor. 396 between minStartColor and maxStartColor.
397 \param maxStartColor: Maximal initial start color of a particle. The 397 \param maxStartColor: Maximal initial start color of a particle. The
398 real color of every particle is calculated as random interpolation 398 real color of every particle is calculated as random interpolation
399 between minStartColor and maxStartColor. 399 between minStartColor and maxStartColor.
400 \param lifeTimeMin: Minimal lifetime of a particle, in milliseconds. 400 \param lifeTimeMin: Minimal lifetime of a particle, in milliseconds.
401 \param lifeTimeMax: Maximal lifetime of a particle, in milliseconds. 401 \param lifeTimeMax: Maximal lifetime of a particle, in milliseconds.
402 \param maxAngleDegrees: Maximal angle in degrees, the emitting 402 \param maxAngleDegrees: Maximal angle in degrees, the emitting
403 direction of the particle will differ from the original direction. 403 direction of the particle will differ from the original direction.
404 \param minStartSize: Minimal initial start size of a particle. The 404 \param minStartSize: Minimal initial start size of a particle. The
405 real size of every particle is calculated as random interpolation 405 real size of every particle is calculated as random interpolation
406 between minStartSize and maxStartSize. 406 between minStartSize and maxStartSize.
407 \param maxStartSize: Maximal initial start size of a particle. The 407 \param maxStartSize: Maximal initial start size of a particle. The
408 real size of every particle is calculated as random interpolation 408 real size of every particle is calculated as random interpolation
409 between minStartSize and maxStartSize. 409 between minStartSize and maxStartSize.
410 \return Pointer to the created particle emitter. To set this emitter 410 \return Pointer to the created particle emitter. To set this emitter
411 as new emitter of this particle system, just call setEmitter(). Note 411 as new emitter of this particle system, just call setEmitter(). Note
412 that you'll have to drop() the returned pointer, after you don't need 412 that you'll have to drop() the returned pointer, after you don't need
413 it any more, see IReferenceCounted::drop() for more informations. */ 413 it any more, see IReferenceCounted::drop() for more informations. */
414 virtual IParticleSphereEmitter* createSphereEmitter( 414 virtual IParticleSphereEmitter* createSphereEmitter(
415 const core::vector3df& center, f32 radius, 415 const core::vector3df& center, f32 radius,
416 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f), 416 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
417 u32 minParticlesPerSecond = 5, 417 u32 minParticlesPerSecond = 5,
418 u32 maxParticlesPerSecond = 10, 418 u32 maxParticlesPerSecond = 10,
419 const video::SColor& minStartColor = video::SColor(255,0,0,0), 419 const video::SColor& minStartColor = video::SColor(255,0,0,0),
420 const video::SColor& maxStartColor = video::SColor(255,255,255,255), 420 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
421 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000, 421 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
422 s32 maxAngleDegrees=0, 422 s32 maxAngleDegrees=0,
423 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f), 423 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
424 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0; 424 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
425 425
426 //! Creates a point attraction affector. 426 //! Creates a point attraction affector.
427 /** This affector modifies the positions of the particles and attracts 427 /** This affector modifies the positions of the particles and attracts
428 them to a specified point at a specified speed per second. 428 them to a specified point at a specified speed per second.
429 \param point: Point to attract particles to. 429 \param point: Point to attract particles to.
430 \param speed: Speed in units per second, to attract to the specified 430 \param speed: Speed in units per second, to attract to the specified
431 point. 431 point.
432 \param attract: Whether the particles attract or detract from this 432 \param attract: Whether the particles attract or detract from this
433 point. 433 point.
434 \param affectX: Whether or not this will affect the X position of the 434 \param affectX: Whether or not this will affect the X position of the
435 particle. 435 particle.
436 \param affectY: Whether or not this will affect the Y position of the 436 \param affectY: Whether or not this will affect the Y position of the
437 particle. 437 particle.
438 \param affectZ: Whether or not this will affect the Z position of the 438 \param affectZ: Whether or not this will affect the Z position of the
439 particle. 439 particle.
440 \return Pointer to the created particle affector. To add this affector 440 \return Pointer to the created particle affector. To add this affector
441 as new affector of this particle system, just call addAffector(). Note 441 as new affector of this particle system, just call addAffector(). Note
442 that you'll have to drop() the returned pointer, after you don't need 442 that you'll have to drop() the returned pointer, after you don't need
443 it any more, see IReferenceCounted::drop() for more informations. */ 443 it any more, see IReferenceCounted::drop() for more informations. */
444 virtual IParticleAttractionAffector* createAttractionAffector( 444 virtual IParticleAttractionAffector* createAttractionAffector(
445 const core::vector3df& point, f32 speed = 1.0f, bool attract = true, 445 const core::vector3df& point, f32 speed = 1.0f, bool attract = true,
446 bool affectX = true, bool affectY = true, bool affectZ = true) = 0; 446 bool affectX = true, bool affectY = true, bool affectZ = true) = 0;
447 447
448 //! Creates a scale particle affector. 448 //! Creates a scale particle affector.
449 /** This affector scales the particle to the a multiple of its size defined 449 /** This affector scales the particle to the a multiple of its size defined
450 by the scaleTo variable. 450 by the scaleTo variable.
451 \param scaleTo: multiple of the size which the particle will be scaled to until deletion 451 \param scaleTo: multiple of the size which the particle will be scaled to until deletion
452 \return Pointer to the created particle affector. 452 \return Pointer to the created particle affector.
453 To add this affector as new affector of this particle system, 453 To add this affector as new affector of this particle system,
454 just call addAffector(). Note that you'll have to drop() the 454 just call addAffector(). Note that you'll have to drop() the
455 returned pointer, after you don't need it any more, see 455 returned pointer, after you don't need it any more, see
456 IReferenceCounted::drop() for more information. */ 456 IReferenceCounted::drop() for more information. */
457 virtual IParticleAffector* createScaleParticleAffector(const core::dimension2df& scaleTo = core::dimension2df(1.0f, 1.0f)) = 0; 457 virtual IParticleAffector* createScaleParticleAffector(const core::dimension2df& scaleTo = core::dimension2df(1.0f, 1.0f)) = 0;
458 458
459 //! Creates a fade out particle affector. 459 //! Creates a fade out particle affector.
460 /** This affector modifies the color of every particle and and reaches 460 /** This affector modifies the color of every particle and and reaches
461 the final color when the particle dies. This affector looks really 461 the final color when the particle dies. This affector looks really
462 good, if the EMT_TRANSPARENT_ADD_COLOR material is used and the 462 good, if the EMT_TRANSPARENT_ADD_COLOR material is used and the
463 targetColor is video::SColor(0,0,0,0): Particles are fading out into 463 targetColor is video::SColor(0,0,0,0): Particles are fading out into
464 void with this setting. 464 void with this setting.
465 \param targetColor: Color whereto the color of the particle is changed. 465 \param targetColor: Color whereto the color of the particle is changed.
466 \param timeNeededToFadeOut: How much time in milli seconds should the 466 \param timeNeededToFadeOut: How much time in milli seconds should the
467 affector need to change the color to the targetColor. 467 affector need to change the color to the targetColor.
468 \return Pointer to the created particle affector. To add this affector 468 \return Pointer to the created particle affector. To add this affector
469 as new affector of this particle system, just call addAffector(). Note 469 as new affector of this particle system, just call addAffector(). Note
470 that you'll have to drop() the returned pointer, after you don't need 470 that you'll have to drop() the returned pointer, after you don't need
471 it any more, see IReferenceCounted::drop() for more informations. */ 471 it any more, see IReferenceCounted::drop() for more informations. */
472 virtual IParticleFadeOutAffector* createFadeOutParticleAffector( 472 virtual IParticleFadeOutAffector* createFadeOutParticleAffector(
473 const video::SColor& targetColor = video::SColor(0,0,0,0), 473 const video::SColor& targetColor = video::SColor(0,0,0,0),
474 u32 timeNeededToFadeOut = 1000) = 0; 474 u32 timeNeededToFadeOut = 1000) = 0;
475 475
476 //! Creates a gravity affector. 476 //! Creates a gravity affector.
477 /** This affector modifies the direction of the particle. It assumes 477 /** This affector modifies the direction of the particle. It assumes
478 that the particle is fired out of the emitter with huge force, but is 478 that the particle is fired out of the emitter with huge force, but is
479 loosing this after some time and is catched by the gravity then. This 479 loosing this after some time and is catched by the gravity then. This
480 affector is ideal for creating things like fountains. 480 affector is ideal for creating things like fountains.
481 \param gravity: Direction and force of gravity. 481 \param gravity: Direction and force of gravity.
482 \param timeForceLost: Time in milli seconds when the force of the 482 \param timeForceLost: Time in milli seconds when the force of the
483 emitter is totally lost and the particle does not move any more. This 483 emitter is totally lost and the particle does not move any more. This
484 is the time where gravity fully affects the particle. 484 is the time where gravity fully affects the particle.
485 \return Pointer to the created particle affector. To add this affector 485 \return Pointer to the created particle affector. To add this affector
486 as new affector of this particle system, just call addAffector(). Note 486 as new affector of this particle system, just call addAffector(). Note
487 that you'll have to drop() the returned pointer, after you don't need 487 that you'll have to drop() the returned pointer, after you don't need
488 it any more, see IReferenceCounted::drop() for more informations. */ 488 it any more, see IReferenceCounted::drop() for more informations. */
489 virtual IParticleGravityAffector* createGravityAffector( 489 virtual IParticleGravityAffector* createGravityAffector(
490 const core::vector3df& gravity = core::vector3df(0.0f,-0.03f,0.0f), 490 const core::vector3df& gravity = core::vector3df(0.0f,-0.03f,0.0f),
491 u32 timeForceLost = 1000) = 0; 491 u32 timeForceLost = 1000) = 0;
492 492
493 //! Creates a rotation affector. 493 //! Creates a rotation affector.
494 /** This affector modifies the positions of the particles and attracts 494 /** This affector modifies the positions of the particles and attracts
495 them to a specified point at a specified speed per second. 495 them to a specified point at a specified speed per second.
496 \param speed: Rotation in degrees per second 496 \param speed: Rotation in degrees per second
497 \param pivotPoint: Point to rotate the particles around 497 \param pivotPoint: Point to rotate the particles around
498 \return Pointer to the created particle affector. To add this affector 498 \return Pointer to the created particle affector. To add this affector
499 as new affector of this particle system, just call addAffector(). Note 499 as new affector of this particle system, just call addAffector(). Note
500 that you'll have to drop() the returned pointer, after you don't need 500 that you'll have to drop() the returned pointer, after you don't need
501 it any more, see IReferenceCounted::drop() for more informations. */ 501 it any more, see IReferenceCounted::drop() for more informations. */
502 virtual IParticleRotationAffector* createRotationAffector( 502 virtual IParticleRotationAffector* createRotationAffector(
503 const core::vector3df& speed = core::vector3df(5.0f,5.0f,5.0f), 503 const core::vector3df& speed = core::vector3df(5.0f,5.0f,5.0f),
504 const core::vector3df& pivotPoint = core::vector3df(0.0f,0.0f,0.0f) ) = 0; 504 const core::vector3df& pivotPoint = core::vector3df(0.0f,0.0f,0.0f) ) = 0;
505}; 505};
506 506
507} // end namespace scene 507} // end namespace scene
508} // end namespace irr 508} // end namespace irr
509 509
510 510
511#endif 511#endif
512 512