summaryrefslogtreecommitdiff
path: root/Runtime/Filters/Particles/MeshParticleEmitter.h
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Filters/Particles/MeshParticleEmitter.h')
-rw-r--r--Runtime/Filters/Particles/MeshParticleEmitter.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/Runtime/Filters/Particles/MeshParticleEmitter.h b/Runtime/Filters/Particles/MeshParticleEmitter.h
new file mode 100644
index 0000000..6ac74c1
--- /dev/null
+++ b/Runtime/Filters/Particles/MeshParticleEmitter.h
@@ -0,0 +1,42 @@
+#ifndef MESHPARTICLEEMITTER_H
+#define MESHPARTICLEEMITTER_H
+
+#include "ParticleEmitter.h"
+#include "ParticleStruct.h"
+#include "Runtime/Filters/Mesh/LodMesh.h"
+
+
+
+class MeshParticleEmitter : public ParticleEmitter
+{
+public:
+ REGISTER_DERIVED_CLASS (MeshParticleEmitter, ParticleEmitter)
+ DECLARE_OBJECT_SERIALIZE (MeshParticleEmitter)
+ MeshParticleEmitter (MemLabelId label, ObjectCreationMode mode);
+
+ void SetMesh (PPtr<Mesh> mesh);
+ PPtr<Mesh> GetMesh () { return m_Mesh; }
+
+ virtual void Reset ();
+
+ static void InitializeClass ();
+ static void CleanupClass ();
+
+private:
+ void SetupParticle (int vertexIndex, Particle& p, const Vector3f& velocityOffset, const Matrix4x4f& scale, const Matrix3x3f& rotation, const Matrix3x3f& normalTransform, float deltaTime, StrideIterator<Vector3f> vertices, StrideIterator<Vector3f> normals);
+ void SetupParticleTri (Particle& p, const Vector3f& velocityOffset, const Matrix4x4f& scale, const Matrix3x3f& rotation, const Matrix3x3f& normalTransform, float deltaTime, StrideIterator<Vector3f> vertices, StrideIterator<Vector3f> normals, const UInt16* faces, int triCount);
+ void SetupParticleStrip (Particle& p, const Vector3f& velocityOffset, const Matrix4x4f& scale, const Matrix3x3f& rotation, const Matrix3x3f& normalTransform, float deltaTime, StrideIterator<Vector3f> vertices, StrideIterator<Vector3f> normals, const UInt16* strip, int stripSize);
+
+ virtual void SetupParticles (ParticleArray& particles, const Vector3f& velocityOffset,
+ const Matrix3x3f& rotation, int firstIndex);
+
+private:
+ bool m_InterpolateTriangles;
+ bool m_Systematic;
+ float m_MinNormalVelocity;
+ float m_MaxNormalVelocity;
+ int m_VertexIndex;
+ PPtr<Mesh> m_Mesh;
+};
+
+#endif