|
IrrlichtEngine
|
00001 // Copyright (C) 2002-2011 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_AFFECTOR_H_INCLUDED__ 00006 #define __I_PARTICLE_AFFECTOR_H_INCLUDED__ 00007 00008 #include "IAttributeExchangingObject.h" 00009 #include "SParticle.h" 00010 00011 namespace irr 00012 { 00013 namespace scene 00014 { 00015 00017 enum E_PARTICLE_AFFECTOR_TYPE 00018 { 00019 EPAT_NONE = 0, 00020 EPAT_ATTRACT, 00021 EPAT_FADE_OUT, 00022 EPAT_GRAVITY, 00023 EPAT_ROTATE, 00024 EPAT_SCALE, 00025 EPAT_COUNT 00026 }; 00027 00029 const c8* const ParticleAffectorTypeNames[] = 00030 { 00031 "None", 00032 "Attract", 00033 "FadeOut", 00034 "Gravity", 00035 "Rotate", 00036 "Scale", 00037 0 00038 }; 00039 00041 class IParticleAffector : public virtual io::IAttributeExchangingObject 00042 { 00043 public: 00044 00046 IParticleAffector() : Enabled(true) {} 00047 00049 00052 virtual void affect(u32 now, SParticle* particlearray, u32 count) = 0; 00053 00055 virtual void setEnabled(bool enabled) { Enabled = enabled; } 00056 00058 virtual bool getEnabled() const { return Enabled; } 00059 00061 virtual E_PARTICLE_AFFECTOR_TYPE getType() const = 0; 00062 00063 protected: 00064 bool Enabled; 00065 }; 00066 00067 } // end namespace scene 00068 } // end namespace irr 00069 00070 00071 #endif 00072