diff options
author | David Walter Seikel | 2013-01-13 18:54:10 +1000 |
---|---|---|
committer | David Walter Seikel | 2013-01-13 18:54:10 +1000 |
commit | 959831f4ef5a3e797f576c3de08cd65032c997ad (patch) | |
tree | e7351908be5995f0b325b2ebeaa02d5a34b82583 /libraries/irrlicht-1.8/include/IParticleSystemSceneNode.h | |
parent | Add info about changes to Irrlicht. (diff) | |
download | SledjHamr-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.h | 1024 |
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 | ||
21 | namespace irr | 21 | namespace irr |
22 | { | 22 | { |
23 | namespace scene | 23 | namespace 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 |
28 | can be controlled by setting the right particle emitters and affectors. | 28 | can be controlled by setting the right particle emitters and affectors. |
29 | You can for example easily create a campfire by doing this: | 29 | You 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 | */ |
46 | class IParticleSystemSceneNode : public ISceneNode | 46 | class IParticleSystemSceneNode : public ISceneNode |
47 | { | 47 | { |
48 | public: | 48 | public: |
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 | ||