summaryrefslogtreecommitdiff
path: root/Runtime/Graphics/ParticleSystem/Modules/EmissionModule.h
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Graphics/ParticleSystem/Modules/EmissionModule.h')
-rw-r--r--Runtime/Graphics/ParticleSystem/Modules/EmissionModule.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/Runtime/Graphics/ParticleSystem/Modules/EmissionModule.h b/Runtime/Graphics/ParticleSystem/Modules/EmissionModule.h
new file mode 100644
index 0000000..75ad977
--- /dev/null
+++ b/Runtime/Graphics/ParticleSystem/Modules/EmissionModule.h
@@ -0,0 +1,34 @@
+#ifndef SHURIKENMODULEEMISSION_H
+#define SHURIKENMODULEEMISSION_H
+
+#include "ParticleSystemModule.h"
+#include "Runtime/Graphics/ParticleSystem/ParticleSystemCurves.h"
+
+class Vector2f;
+
+class EmissionModule : public ParticleSystemModule
+{
+public:
+ DECLARE_MODULE (EmissionModule)
+ EmissionModule ();
+
+ enum { kEmissionTypeTime, kEmissionTypeDistance };
+
+ static void Emit (ParticleSystemEmissionState& emissionState, size_t& amountOfParticlesToEmit, size_t& numContinuous, const ParticleSystemEmissionData& emissionData, const Vector3f velocity, float fromT, float toT, float dt, float length);
+ void CheckConsistency ();
+
+ int CalculateMaximumEmitCountEstimate(float deltaTime) const;
+
+ const ParticleSystemEmissionData& GetEmissionDataRef() { return m_EmissionData; }
+ const ParticleSystemEmissionData& GetEmissionDataRef() const { return m_EmissionData; }
+ void GetEmissionDataCopy(ParticleSystemEmissionData* emissionData) { *emissionData = m_EmissionData; };
+ ParticleSystemEmissionData& GetEmissionData() { return m_EmissionData; }
+
+ template<class TransferFunction>
+ void Transfer (TransferFunction& transfer);
+
+private:
+ ParticleSystemEmissionData m_EmissionData;
+};
+
+#endif // SHURIKENMODULEEMISSION_H