Irrlicht 3D Engine
 
Loading...
Searching...
No Matches
IParticleSystemSceneNode.h
Go to the documentation of this file.
1// Copyright (C) 2002-2012 Nikolaus Gebhardt
2// This file is part of the "Irrlicht Engine".
3// For conditions of distribution and use, see copyright notice in irrlicht.h
4
5#ifndef __I_PARTICLE_SYSTEM_SCENE_NODE_H_INCLUDED__
6#define __I_PARTICLE_SYSTEM_SCENE_NODE_H_INCLUDED__
7
8#include "ISceneNode.h"
10#include "IParticleBoxEmitter.h"
19#include "dimension2d.h"
20
21namespace irr
22{
23namespace scene
24{
25
27
47{
48public:
49
52 const core::vector3df& position = 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))
55 : ISceneNode(parent, mgr, id, position, rotation, scale) {}
56
58 virtual void setParticleSize(
59 const core::dimension2d<f32> &size = core::dimension2d<f32>(5.0f, 5.0f)) = 0;
60
62
65 virtual void setParticlesAreGlobal(bool global=true) = 0;
66
68 virtual void clearParticles() = 0;
69
73 virtual void doParticleSystem(u32 time) = 0;
74
76
78
80
86 virtual void setEmitter(IParticleEmitter* emitter) = 0;
87
89
100 virtual void addAffector(IParticleAffector* affector) = 0;
101
103
105
107 virtual void removeAllAffectors() = 0;
108
110
154 scene::IAnimatedMeshSceneNode* node, bool useNormalDirection = true,
155 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
156 f32 normalDirectionModifier = 100.0f, s32 mbNumber = -1,
157 bool everyMeshVertex = false,
158 u32 minParticlesPerSecond = 5, u32 maxParticlesPerSecond = 10,
159 const video::SColor& minStartColor = video::SColor(255,0,0,0),
160 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
161 u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
162 s32 maxAngleDegrees = 0,
163 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
164 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
165
167
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),
196 u32 minParticlesPerSecond = 5,
197 u32 maxParticlesPerSecond = 10,
198 const video::SColor& minStartColor = video::SColor(255,0,0,0),
199 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
200 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
201 s32 maxAngleDegrees=0,
202 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
203 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
204
206
238 const core::vector3df& center, f32 radius,
239 const core::vector3df& normal, f32 length,
240 bool outlineOnly = false,
241 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
242 u32 minParticlesPerSecond = 5, u32 maxParticlesPerSecond = 10,
243 const video::SColor& minStartColor = video::SColor(255,0,0,0),
244 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
245 u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
246 s32 maxAngleDegrees = 0,
247 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
248 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
249
251
294 scene::IMesh* mesh, bool useNormalDirection = true,
295 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
296 f32 normalDirectionModifier = 100.0f, s32 mbNumber = -1,
297 bool everyMeshVertex = false,
298 u32 minParticlesPerSecond = 5, u32 maxParticlesPerSecond = 10,
299 const video::SColor& minStartColor = video::SColor(255,0,0,0),
300 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
301 u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
302 s32 maxAngleDegrees = 0,
303 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
304 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
305
307
333 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
334 u32 minParticlesPerSecond = 5,
335 u32 maxParticlesPerSecond = 10,
336 const video::SColor& minStartColor = video::SColor(255,0,0,0),
337 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
338 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
339 s32 maxAngleDegrees=0,
340 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
341 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
342
344
375 const core::vector3df& center, f32 radius, f32 ringThickness,
376 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
377 u32 minParticlesPerSecond = 5,
378 u32 maxParticlesPerSecond = 10,
379 const video::SColor& minStartColor = video::SColor(255,0,0,0),
380 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
381 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
382 s32 maxAngleDegrees=0,
383 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
384 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
385
387
415 const core::vector3df& center, f32 radius,
416 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
417 u32 minParticlesPerSecond = 5,
418 u32 maxParticlesPerSecond = 10,
419 const video::SColor& minStartColor = video::SColor(255,0,0,0),
420 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
421 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
422 s32 maxAngleDegrees=0,
423 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
424 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
425
427
445 const core::vector3df& point, f32 speed = 1.0f, bool attract = true,
446 bool affectX = true, bool affectY = true, bool affectZ = true) = 0;
447
449
458
460
473 const video::SColor& targetColor = video::SColor(0,0,0,0),
474 u32 timeNeededToFadeOut = 1000) = 0;
475
477
490 const core::vector3df& gravity = core::vector3df(0.0f,-0.03f,0.0f),
491 u32 timeForceLost = 1000) = 0;
492
494
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;
505};
506
507} // end namespace scene
508} // end namespace irr
509
510
511#endif
512
Axis aligned bounding box in 3d dimensional space.
Definition aabbox3d.h:22
Scene node capable of displaying an animated mesh and its shadow.
Class which holds the geometry of an object.
Definition IMesh.h:24
A particle affector modifies particles.
A particle emitter which emits particles from mesh vertices.
A particle affector which attracts or detracts particles.
A particle emitter which emits particles from a box shaped space.
A particle emitter which emits from a cylindrically shaped space.
A particle emitter for using with particle systems.
A particle affector which fades out the particles.
A particle affector which applies gravity to particles.
A particle emitter which emits from vertices of a mesh.
A particle emitter which emits particles along a ring shaped area.
A particle affector which rotates the particle system.
A particle emitter which emits from a spherical space.
A particle system scene node for creating snow, fire, exlosions, smoke...
virtual IParticleFadeOutAffector * createFadeOutParticleAffector(const video::SColor &targetColor=video::SColor(0, 0, 0, 0), u32 timeNeededToFadeOut=1000)=0
Creates a fade out particle affector.
virtual void setParticleSize(const core::dimension2d< f32 > &size=core::dimension2d< f32 >(5.0f, 5.0f))=0
Sets the size of all particles.
virtual IParticleAttractionAffector * createAttractionAffector(const core::vector3df &point, f32 speed=1.0f, bool attract=true, bool affectX=true, bool affectY=true, bool affectZ=true)=0
Creates a point attraction affector.
virtual const core::list< IParticleAffector * > & getAffectors() const =0
Get a list of all particle affectors.
virtual IParticlePointEmitter * createPointEmitter(const core::vector3df &direction=core::vector3df(0.0f, 0.03f, 0.0f), u32 minParticlesPerSecond=5, u32 maxParticlesPerSecond=10, const video::SColor &minStartColor=video::SColor(255, 0, 0, 0), const video::SColor &maxStartColor=video::SColor(255, 255, 255, 255), u32 lifeTimeMin=2000, u32 lifeTimeMax=4000, s32 maxAngleDegrees=0, const core::dimension2df &minStartSize=core::dimension2df(5.0f, 5.0f), const core::dimension2df &maxStartSize=core::dimension2df(5.0f, 5.0f))=0
Creates a point particle emitter.
virtual void addAffector(IParticleAffector *affector)=0
Adds new particle effector to the particle system.
IParticleSystemSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id, const core::vector3df &position=core::vector3df(0, 0, 0), const core::vector3df &rotation=core::vector3df(0, 0, 0), const core::vector3df &scale=core::vector3df(1.0f, 1.0f, 1.0f))
Constructor.
virtual IParticleSphereEmitter * createSphereEmitter(const core::vector3df &center, f32 radius, const core::vector3df &direction=core::vector3df(0.0f, 0.03f, 0.0f), u32 minParticlesPerSecond=5, u32 maxParticlesPerSecond=10, const video::SColor &minStartColor=video::SColor(255, 0, 0, 0), const video::SColor &maxStartColor=video::SColor(255, 255, 255, 255), u32 lifeTimeMin=2000, u32 lifeTimeMax=4000, s32 maxAngleDegrees=0, const core::dimension2df &minStartSize=core::dimension2df(5.0f, 5.0f), const core::dimension2df &maxStartSize=core::dimension2df(5.0f, 5.0f))=0
Creates a sphere particle emitter.
virtual IParticleRingEmitter * createRingEmitter(const core::vector3df &center, f32 radius, f32 ringThickness, const core::vector3df &direction=core::vector3df(0.0f, 0.03f, 0.0f), u32 minParticlesPerSecond=5, u32 maxParticlesPerSecond=10, const video::SColor &minStartColor=video::SColor(255, 0, 0, 0), const video::SColor &maxStartColor=video::SColor(255, 255, 255, 255), u32 lifeTimeMin=2000, u32 lifeTimeMax=4000, s32 maxAngleDegrees=0, const core::dimension2df &minStartSize=core::dimension2df(5.0f, 5.0f), const core::dimension2df &maxStartSize=core::dimension2df(5.0f, 5.0f))=0
Creates a ring particle emitter.
virtual IParticleAffector * createScaleParticleAffector(const core::dimension2df &scaleTo=core::dimension2df(1.0f, 1.0f))=0
Creates a scale particle affector.
virtual IParticleBoxEmitter * createBoxEmitter(const core::aabbox3df &box=core::aabbox3df(-10, 28,-10, 10, 30, 10), const core::vector3df &direction=core::vector3df(0.0f, 0.03f, 0.0f), u32 minParticlesPerSecond=5, u32 maxParticlesPerSecond=10, const video::SColor &minStartColor=video::SColor(255, 0, 0, 0), const video::SColor &maxStartColor=video::SColor(255, 255, 255, 255), u32 lifeTimeMin=2000, u32 lifeTimeMax=4000, s32 maxAngleDegrees=0, const core::dimension2df &minStartSize=core::dimension2df(5.0f, 5.0f), const core::dimension2df &maxStartSize=core::dimension2df(5.0f, 5.0f))=0
Creates a box particle emitter.
virtual IParticleCylinderEmitter * createCylinderEmitter(const core::vector3df &center, f32 radius, const core::vector3df &normal, f32 length, bool outlineOnly=false, const core::vector3df &direction=core::vector3df(0.0f, 0.03f, 0.0f), u32 minParticlesPerSecond=5, u32 maxParticlesPerSecond=10, const video::SColor &minStartColor=video::SColor(255, 0, 0, 0), const video::SColor &maxStartColor=video::SColor(255, 255, 255, 255), u32 lifeTimeMin=2000, u32 lifeTimeMax=4000, s32 maxAngleDegrees=0, const core::dimension2df &minStartSize=core::dimension2df(5.0f, 5.0f), const core::dimension2df &maxStartSize=core::dimension2df(5.0f, 5.0f))=0
Creates a particle emitter for emitting from a cylinder.
virtual IParticleAnimatedMeshSceneNodeEmitter * createAnimatedMeshSceneNodeEmitter(scene::IAnimatedMeshSceneNode *node, bool useNormalDirection=true, const core::vector3df &direction=core::vector3df(0.0f, 0.03f, 0.0f), f32 normalDirectionModifier=100.0f, s32 mbNumber=-1, bool everyMeshVertex=false, u32 minParticlesPerSecond=5, u32 maxParticlesPerSecond=10, const video::SColor &minStartColor=video::SColor(255, 0, 0, 0), const video::SColor &maxStartColor=video::SColor(255, 255, 255, 255), u32 lifeTimeMin=2000, u32 lifeTimeMax=4000, s32 maxAngleDegrees=0, const core::dimension2df &minStartSize=core::dimension2df(5.0f, 5.0f), const core::dimension2df &maxStartSize=core::dimension2df(5.0f, 5.0f))=0
Creates a particle emitter for an animated mesh scene node.
virtual void removeAllAffectors()=0
Removes all particle affectors in the particle system.
virtual void doParticleSystem(u32 time)=0
virtual void clearParticles()=0
Remove all currently visible particles.
virtual IParticleMeshEmitter * createMeshEmitter(scene::IMesh *mesh, bool useNormalDirection=true, const core::vector3df &direction=core::vector3df(0.0f, 0.03f, 0.0f), f32 normalDirectionModifier=100.0f, s32 mbNumber=-1, bool everyMeshVertex=false, u32 minParticlesPerSecond=5, u32 maxParticlesPerSecond=10, const video::SColor &minStartColor=video::SColor(255, 0, 0, 0), const video::SColor &maxStartColor=video::SColor(255, 255, 255, 255), u32 lifeTimeMin=2000, u32 lifeTimeMax=4000, s32 maxAngleDegrees=0, const core::dimension2df &minStartSize=core::dimension2df(5.0f, 5.0f), const core::dimension2df &maxStartSize=core::dimension2df(5.0f, 5.0f))=0
Creates a mesh particle emitter.
virtual IParticleEmitter * getEmitter()=0
Gets the particle emitter, which creates the particles.
virtual IParticleRotationAffector * createRotationAffector(const core::vector3df &speed=core::vector3df(5.0f, 5.0f, 5.0f), const core::vector3df &pivotPoint=core::vector3df(0.0f, 0.0f, 0.0f))=0
Creates a rotation affector.
virtual IParticleGravityAffector * createGravityAffector(const core::vector3df &gravity=core::vector3df(0.0f,-0.03f, 0.0f), u32 timeForceLost=1000)=0
Creates a gravity affector.
virtual void setParticlesAreGlobal(bool global=true)=0
Sets if the particles should be global.
virtual void setEmitter(IParticleEmitter *emitter)=0
Sets the particle emitter, which creates the particles.
The Scene Manager manages scene nodes, mesh recources, cameras and all the other stuff.
Scene node interface.
Definition ISceneNode.h:41
Class representing a 32 bit ARGB color.
Definition SColor.h:202
Everything in the Irrlicht Engine can be found in this namespace.
Definition aabbox3d.h:13
float f32
32 bit floating point variable.
Definition irrTypes.h:104
unsigned int u32
32 bit unsigned variable.
Definition irrTypes.h:58
signed int s32
32 bit signed variable.
Definition irrTypes.h:66