#ifndef __I_PARTICLE_AFFECTOR_H_INCLUDED__
#define __I_PARTICLE_AFFECTOR_H_INCLUDED__
#include "IAttributeExchangingObject.h"
#include "SParticle.h"
namespace irr
{
namespace scene
{
enum E_PARTICLE_AFFECTOR_TYPE
{
EPAT_NONE = 0,
EPAT_ATTRACT,
EPAT_FADE_OUT,
EPAT_GRAVITY,
EPAT_ROTATE,
EPAT_SCALE,
EPAT_COUNT
};
const c8* const ParticleAffectorTypeNames[] =
{
"None",
"Attract",
"FadeOut",
"Gravity",
"Rotate",
"Scale",
0
};
class IParticleAffector : public virtual io::IAttributeExchangingObject
{
public:
IParticleAffector() : Enabled(true) {}
virtual void affect(u32 now, SParticle* particlearray, u32 count) = 0;
virtual void setEnabled(bool enabled) { Enabled = enabled; }
virtual bool getEnabled() const { return Enabled; }
virtual E_PARTICLE_AFFECTOR_TYPE getType() const = 0;
protected:
bool Enabled;
};
}
}
#endif