Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/particlesystem.h')
-rw-r--r--src/render/particlesystem.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/render/particlesystem.h b/src/render/particlesystem.h
new file mode 100644
index 0000000..b3edce4
--- /dev/null
+++ b/src/render/particlesystem.h
@@ -0,0 +1,75 @@
+/*
+ render/particlesystem.h
+ This file is part of the Osirion project and is distributed under
+ the terms of the GNU General Public License version 2
+*/
+
+#ifndef __INCLUDED_RENDER_PARTICLESYSTEM_H__
+#define __INCLUDED_RENDER_PARTICLESYSTEM_H__
+
+#include <list>
+
+#include "core/entity.h"
+
+#include "render/particlesystemscript.h"
+#include "render/particleejector.h"
+
+
+namespace render {
+
+/* ---- class ParticleSystem --------------------------------------- */
+
+/**
+ * @brief abstract base class for a particle system attached to an entity
+ * */
+class ParticleSystem
+{
+public:
+ typedef std::list<ParticleEjector *> Ejectors;
+
+ ParticleSystem(const ParticleSystemScript *script, const core::Entity *entity, const model::Particles *modelclass);
+ ~ParticleSystem();
+
+ void draw(const float seconds);
+
+ /**
+ * @brief clear all particles from all ejectors
+ * */
+ void clear();
+
+ inline const core::Entity *entity()
+ {
+ return particlesystem_entity;
+ }
+
+ /**
+ * @brief location of the particlesystem
+ * */
+ inline const math::Vector3f &location() const {
+ return particlesystem_location;
+ }
+
+ /**
+ * @brief axisof the particlesystem
+ * */
+ inline const math::Axis &axis() const {
+ return particlesystem_axis;
+ }
+
+private:
+ inline Ejectors & ejectors()
+ {
+ return particlesystem_ejectors;
+ }
+
+ float particlesystem_modelscale;
+ math::Vector3f particlesystem_location;
+ math::Axis particlesystem_axis;
+ const core::Entity *particlesystem_entity;
+ Ejectors particlesystem_ejectors;
+
+};
+
+} // namespace
+
+#endif // __INCLUDED_RENDER_PARTICLESYSTEM_H__