Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members | Tutorials

IParticleSystemSceneNode.h

Go to the documentation of this file.
00001 // Copyright (C) 2002-2010 Nikolaus Gebhardt
00002 // This file is part of the "Irrlicht Engine".
00003 // For conditions of distribution and use, see copyright notice in irrlicht.h
00004 
00005 #ifndef __I_PARTICLE_SYSTEM_SCENE_NODE_H_INCLUDED__
00006 #define __I_PARTICLE_SYSTEM_SCENE_NODE_H_INCLUDED__
00007 
00008 #include "ISceneNode.h"
00009 #include "IParticleAnimatedMeshSceneNodeEmitter.h"
00010 #include "IParticleBoxEmitter.h"
00011 #include "IParticleCylinderEmitter.h"
00012 #include "IParticleMeshEmitter.h"
00013 #include "IParticleRingEmitter.h"
00014 #include "IParticleSphereEmitter.h"
00015 #include "IParticleAttractionAffector.h"
00016 #include "IParticleFadeOutAffector.h"
00017 #include "IParticleGravityAffector.h"
00018 #include "IParticleRotationAffector.h"
00019 #include "dimension2d.h"
00020 
00021 namespace irr
00022 {
00023 namespace scene
00024 {
00025 
00027 
00046 class IParticleSystemSceneNode : public ISceneNode
00047 {
00048 public:
00049 
00051         IParticleSystemSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id,
00052                 const core::vector3df& position = core::vector3df(0,0,0),
00053                 const core::vector3df& rotation = core::vector3df(0,0,0),
00054                 const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f))
00055                         : ISceneNode(parent, mgr, id, position, rotation, scale) {}
00056 
00058         virtual void setParticleSize(
00059                 const core::dimension2d<f32> &size = core::dimension2d<f32>(5.0f, 5.0f)) = 0;
00060 
00062 
00065         virtual void setParticlesAreGlobal(bool global=true) = 0;
00066 
00068 
00069         virtual IParticleEmitter* getEmitter() =0;
00070 
00072 
00078         virtual void setEmitter(IParticleEmitter* emitter) = 0;
00079 
00081 
00092         virtual void addAffector(IParticleAffector* affector) = 0;
00093 
00095         virtual void removeAllAffectors() = 0;
00096 
00098 
00141         virtual IParticleAnimatedMeshSceneNodeEmitter* createAnimatedMeshSceneNodeEmitter(
00142                 scene::IAnimatedMeshSceneNode* node, bool useNormalDirection = true,
00143                 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
00144                 f32 normalDirectionModifier = 100.0f, s32 mbNumber = -1,
00145                 bool everyMeshVertex = false,
00146                 u32 minParticlesPerSecond = 5, u32 maxParticlesPerSecond = 10,
00147                 const video::SColor& minStartColor = video::SColor(255,0,0,0),
00148                 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
00149                 u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
00150                 s32 maxAngleDegrees = 0,
00151                 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
00152                 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
00153 
00155 
00181         virtual IParticleBoxEmitter* createBoxEmitter(
00182                 const core::aabbox3df& box = core::aabbox3df(-10,28,-10,10,30,10),
00183                 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
00184                 u32 minParticlesPerSecond = 5,
00185                 u32 maxParticlesPerSecond = 10,
00186                 const video::SColor& minStartColor = video::SColor(255,0,0,0),
00187                 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
00188                 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
00189                 s32 maxAngleDegrees=0,
00190                 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
00191                 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
00192 
00194 
00225         virtual IParticleCylinderEmitter* createCylinderEmitter(
00226                 const core::vector3df& center, f32 radius,
00227                 const core::vector3df& normal, f32 length,
00228                 bool outlineOnly = false,
00229                 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
00230                 u32 minParticlesPerSecond = 5, u32 maxParticlesPerSecond = 10,
00231                 const video::SColor& minStartColor = video::SColor(255,0,0,0),
00232                 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
00233                 u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
00234                 s32 maxAngleDegrees = 0,
00235                 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
00236                 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
00237 
00239 
00281         virtual IParticleMeshEmitter* createMeshEmitter(
00282                 scene::IMesh* mesh, bool useNormalDirection = true,
00283                 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
00284                 f32 normalDirectionModifier = 100.0f, s32 mbNumber = -1,
00285                 bool everyMeshVertex = false,
00286                 u32 minParticlesPerSecond = 5, u32 maxParticlesPerSecond = 10,
00287                 const video::SColor& minStartColor = video::SColor(255,0,0,0),
00288                 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
00289                 u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
00290                 s32 maxAngleDegrees = 0,
00291                 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
00292                 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
00293 
00295 
00320         virtual IParticlePointEmitter* createPointEmitter(
00321                 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
00322                 u32 minParticlesPerSecond = 5,
00323                 u32 maxParticlesPerSecond = 10,
00324                 const video::SColor& minStartColor = video::SColor(255,0,0,0),
00325                 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
00326                 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
00327                 s32 maxAngleDegrees=0,
00328                 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
00329                 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
00330 
00332 
00362         virtual IParticleRingEmitter* createRingEmitter(
00363                 const core::vector3df& center, f32 radius, f32 ringThickness,
00364                 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
00365                 u32 minParticlesPerSecond = 5,
00366                 u32 maxParticlesPerSecond = 10,
00367                 const video::SColor& minStartColor = video::SColor(255,0,0,0),
00368                 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
00369                 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
00370                 s32 maxAngleDegrees=0,
00371                 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
00372                 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
00373 
00375 
00402         virtual IParticleSphereEmitter* createSphereEmitter(
00403                 const core::vector3df& center, f32 radius,
00404                 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
00405                 u32 minParticlesPerSecond = 5,
00406                 u32 maxParticlesPerSecond = 10,
00407                 const video::SColor& minStartColor = video::SColor(255,0,0,0),
00408                 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
00409                 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
00410                 s32 maxAngleDegrees=0,
00411                 const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
00412                 const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
00413 
00415 
00432         virtual IParticleAttractionAffector* createAttractionAffector(
00433                 const core::vector3df& point, f32 speed = 1.0f, bool attract = true,
00434                 bool affectX = true, bool affectY = true, bool affectZ = true) = 0;
00435 
00437 
00445         virtual IParticleAffector* createScaleParticleAffector(const core::dimension2df& scaleTo = core::dimension2df(1.0f, 1.0f)) = 0;
00446 
00448 
00460         virtual IParticleFadeOutAffector* createFadeOutParticleAffector(
00461                 const video::SColor& targetColor = video::SColor(0,0,0,0),
00462                 u32 timeNeededToFadeOut = 1000) = 0;
00463 
00465 
00477         virtual IParticleGravityAffector* createGravityAffector(
00478                 const core::vector3df& gravity = core::vector3df(0.0f,-0.03f,0.0f),
00479                 u32 timeForceLost = 1000) = 0;
00480 
00482 
00490         virtual IParticleRotationAffector* createRotationAffector(
00491                 const core::vector3df& speed = core::vector3df(5.0f,5.0f,5.0f),
00492                 const core::vector3df& pivotPoint = core::vector3df(0.0f,0.0f,0.0f) ) = 0;
00493 };
00494 
00495 } // end namespace scene
00496 } // end namespace irr
00497 
00498 
00499 #endif
00500 

The Irrlicht Engine
The Irrlicht Engine Documentation © 2003-2010 by Nikolaus Gebhardt. Generated on Sun Oct 24 12:41:57 2010 by Doxygen (1.6.2)