summaryrefslogtreecommitdiff
path: root/include/IParticleAffector.h
diff options
context:
space:
mode:
authorMirrorbot <mirrorbot@cogarr.net>2025-12-27 17:53:06 -0600
committerMirrorbot <mirrorbot@cogarr.net>2025-12-27 17:53:06 -0600
commit71e94ee161447b84c0eaabf6567f8fa62262cd3e (patch)
tree391064cc6173a6fe75069af2fdc1978af12f623e /include/IParticleAffector.h
downloadirrlicht-71e94ee161447b84c0eaabf6567f8fa62262cd3e.tar.gz
irrlicht-71e94ee161447b84c0eaabf6567f8fa62262cd3e.tar.bz2
irrlicht-71e94ee161447b84c0eaabf6567f8fa62262cd3e.zip
Inital commitHEADmaster
Diffstat (limited to 'include/IParticleAffector.h')
-rw-r--r--include/IParticleAffector.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/include/IParticleAffector.h b/include/IParticleAffector.h
new file mode 100644
index 0000000..e2b83e8
--- /dev/null
+++ b/include/IParticleAffector.h
@@ -0,0 +1,72 @@
+// Copyright (C) 2002-2012 Nikolaus Gebhardt
+// This file is part of the "Irrlicht Engine".
+// For conditions of distribution and use, see copyright notice in irrlicht.h
+
+#ifndef __I_PARTICLE_AFFECTOR_H_INCLUDED__
+#define __I_PARTICLE_AFFECTOR_H_INCLUDED__
+
+#include "IAttributeExchangingObject.h"
+#include "SParticle.h"
+
+namespace irr
+{
+namespace scene
+{
+
+//! Types of built in particle affectors
+enum E_PARTICLE_AFFECTOR_TYPE
+{
+ EPAT_NONE = 0,
+ EPAT_ATTRACT,
+ EPAT_FADE_OUT,
+ EPAT_GRAVITY,
+ EPAT_ROTATE,
+ EPAT_SCALE,
+ EPAT_COUNT
+};
+
+//! Names for built in particle affectors
+const c8* const ParticleAffectorTypeNames[] =
+{
+ "None",
+ "Attract",
+ "FadeOut",
+ "Gravity",
+ "Rotate",
+ "Scale",
+ 0
+};
+
+//! A particle affector modifies particles.
+class IParticleAffector : public virtual io::IAttributeExchangingObject
+{
+public:
+
+ //! constructor
+ IParticleAffector() : Enabled(true) {}
+
+ //! Affects an array of particles.
+ /** \param now Current time. (Same as ITimer::getTime() would return)
+ \param particlearray Array of particles.
+ \param count Amount of particles in array. */
+ virtual void affect(u32 now, SParticle* particlearray, u32 count) = 0;
+
+ //! Sets whether or not the affector is currently enabled.
+ virtual void setEnabled(bool enabled) { Enabled = enabled; }
+
+ //! Gets whether or not the affector is currently enabled.
+ virtual bool getEnabled() const { return Enabled; }
+
+ //! Get emitter type
+ virtual E_PARTICLE_AFFECTOR_TYPE getType() const = 0;
+
+protected:
+ bool Enabled;
+};
+
+} // end namespace scene
+} // end namespace irr
+
+
+#endif
+