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 Documentation © 2003-2010 by Nikolaus Gebhardt. Generated on Sun Oct 24 12:41:57 2010 by Doxygen (1.6.2)