5#ifndef __I_PARTICLE_SYSTEM_SCENE_NODE_H_INCLUDED__
6#define __I_PARTICLE_SYSTEM_SCENE_NODE_H_INCLUDED__
55 :
ISceneNode(parent, mgr, id, position, rotation, scale) {}
156 f32 normalDirectionModifier = 100.0f,
s32 mbNumber = -1,
157 bool everyMeshVertex =
false,
158 u32 minParticlesPerSecond = 5,
u32 maxParticlesPerSecond = 10,
161 u32 lifeTimeMin = 2000,
u32 lifeTimeMax = 4000,
162 s32 maxAngleDegrees = 0,
196 u32 minParticlesPerSecond = 5,
197 u32 maxParticlesPerSecond = 10,
200 u32 lifeTimeMin=2000,
u32 lifeTimeMax=4000,
201 s32 maxAngleDegrees=0,
240 bool outlineOnly =
false,
242 u32 minParticlesPerSecond = 5,
u32 maxParticlesPerSecond = 10,
245 u32 lifeTimeMin = 2000,
u32 lifeTimeMax = 4000,
246 s32 maxAngleDegrees = 0,
296 f32 normalDirectionModifier = 100.0f,
s32 mbNumber = -1,
297 bool everyMeshVertex =
false,
298 u32 minParticlesPerSecond = 5,
u32 maxParticlesPerSecond = 10,
301 u32 lifeTimeMin = 2000,
u32 lifeTimeMax = 4000,
302 s32 maxAngleDegrees = 0,
334 u32 minParticlesPerSecond = 5,
335 u32 maxParticlesPerSecond = 10,
338 u32 lifeTimeMin=2000,
u32 lifeTimeMax=4000,
339 s32 maxAngleDegrees=0,
377 u32 minParticlesPerSecond = 5,
378 u32 maxParticlesPerSecond = 10,
381 u32 lifeTimeMin=2000,
u32 lifeTimeMax=4000,
382 s32 maxAngleDegrees=0,
417 u32 minParticlesPerSecond = 5,
418 u32 maxParticlesPerSecond = 10,
421 u32 lifeTimeMin=2000,
u32 lifeTimeMax=4000,
422 s32 maxAngleDegrees=0,
446 bool affectX =
true,
bool affectY =
true,
bool affectZ =
true) = 0;
474 u32 timeNeededToFadeOut = 1000) = 0;
491 u32 timeForceLost = 1000) = 0;
Axis aligned bounding box in 3d dimensional space.
Scene node capable of displaying an animated mesh and its shadow.
Class which holds the geometry of an object.
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 ¢er, 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 ¢er, 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 ¢er, 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.
Class representing a 32 bit ARGB color.
Everything in the Irrlicht Engine can be found in this namespace.
float f32
32 bit floating point variable.
unsigned int u32
32 bit unsigned variable.
signed int s32
32 bit signed variable.