TDME2  1.9.200
FogParticleSystem.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 
5 #include <tdme/tdme.h>
7 #include <tdme/engine/fwd-tdme.h>
9 #include <tdme/engine/Color4.h>
14 #include <tdme/engine/Entity.h>
16 #include <tdme/engine/Transform.h>
17 #include <tdme/math/fwd-tdme.h>
18 #include <tdme/math/Matrix4x4.h>
19 #include <tdme/math/Vector3.h>
20 
21 using std::string;
22 
34 
35 /**
36  * Fog particle system entity to be used with engine class
37  * @author Andreas Drewke
38  */
41  , public ParticleSystem
42 {
44 
45 private:
46  bool frustumCulling { true };
48 
49  // overridden methods
50  inline void setParentTransform(const Transform& parentTransform) override {
51  FogParticleSystemInternal::setParentTransform(parentTransform);
52  }
53 
54 public:
55  // forbid class copy
57 
58  /**
59  * Public constructor
60  * @param id id
61  * @param emitter emitter
62  * @param maxPoints max points
63  * @param pointSize point size
64  * @param texture texture
65  * @param textureHorizontalSprites texture horizonal sprites
66  * @param textureVerticalSprites texture vertical sprites
67  * @param fps frames per seconds
68  */
69  FogParticleSystem(const string& id, ParticleEmitter* emitter, int32_t maxPoints, float pointSize, Texture* texture = nullptr, int32_t textureHorizontalSprites = 1, int32_t textureVerticalSprites = 1, float fps = 10.0f);
70 
71  // overridden methods
72  inline EntityType getEntityType() override {
74  }
75  void setEngine(Engine* engine) override;
76  void setRenderer(Renderer* renderer) override;
77  void initialize() override;
78  void dispose() override;
79 
80  inline bool isEnabled() override {
81  return FogParticleSystemInternal::isEnabled();
82  }
83 
84  void setEnabled(bool enabled) override;
85  bool isFrustumCulling() override;
86  void setFrustumCulling(bool frustumCulling) override;
87  void update() override;
88 
89  inline BoundingBox* getBoundingBox() override {
90  return &boundingBox;
91  }
92  inline BoundingBox* getWorldBoundingBox() override {
93  return &worldBoundingBox;
94  }
95 
96  inline ParticleEmitter* getEmitter() override {
97  return FogParticleSystemInternal::getEmitter();
98  }
99 
100  inline const Color4& getEffectColorAdd() const override {
101  return FogParticleSystemInternal::getEffectColorAdd();
102  }
103 
104  inline void setEffectColorAdd(const Color4& effectColorAdd) override {
105  FogParticleSystemInternal::setEffectColorAdd(effectColorAdd);
106  }
107 
108  inline const Color4& getEffectColorMul() const override {
109  return FogParticleSystemInternal::getEffectColorMul();
110  }
111 
112  inline void setEffectColorMul(const Color4& effectColorMul) override {
113  FogParticleSystemInternal::setEffectColorMul(effectColorMul);
114  }
115 
116  inline const string& getId() override {
117  return FogParticleSystemInternal::getId();
118  }
119 
120  inline bool isContributesShadows() override {
121  return FogParticleSystemInternal::isContributesShadows();
122  }
123 
124  inline void setContributesShadows(bool contributesShadows) override {
125  FogParticleSystemInternal::setContributesShadows(contributesShadows);
126  }
127 
128  inline bool isReceivesShadows() override {
129  return FogParticleSystemInternal::isReceivesShadows();
130  }
131 
132  inline void setReceivesShadows(bool receivesShadows) override {
133  FogParticleSystemInternal::setReceivesShadows(receivesShadows);
134  }
135 
136  inline bool isPickable() override {
137  return FogParticleSystemInternal::isPickable();
138  }
139 
140  inline void setPickable(bool pickable) override {
141  FogParticleSystemInternal::setPickable(pickable);
142  }
143 
144  inline const Vector3& getTranslation() const override {
145  return Transform::getTranslation();
146  }
147 
148  inline void setTranslation(const Vector3& translation) override {
150  }
151 
152  inline const Vector3& getScale() const override {
153  return Transform::getScale();
154  }
155 
156  inline void setScale(const Vector3& scale) override {
158  }
159 
160  inline const int getRotationCount() const override {
162  }
163 
164  inline Rotation& getRotation(const int idx) override {
165  return Transform::getRotation(idx);
166  }
167 
168  inline void addRotation(const Vector3& axis, const float angle) override {
169  Transform::addRotation(axis, angle);
170  }
171 
172  inline void removeRotation(const int idx) override {
174  }
175 
176  inline const Vector3& getRotationAxis(const int idx) const override {
177  return Transform::getRotationAxis(idx);
178  }
179 
180  inline void setRotationAxis(const int idx, const Vector3& axis) override {
181  Transform::setRotationAxis(idx, axis);
182  }
183 
184  inline const float getRotationAngle(const int idx) const override {
185  return Transform::getRotationAngle(idx);
186  }
187 
188  inline void setRotationAngle(const int idx, const float angle) override {
189  Transform::setRotationAngle(idx, angle);
190  }
191 
192  inline const Quaternion& getRotationsQuaternion() const override {
194  }
195 
196  inline const Matrix4x4& getTransformMatrix() const override {
197  return entityTransformMatrix;
198  }
199 
200  inline const Transform& getParentTransform() const override {
201  return parentTransform;
202  }
203 
204  inline const Transform& getTransform() const override {
205  return *this;
206  }
207 
208  void setTransform(const Transform& transform) override;
209 
210  inline RenderPass getRenderPass() const override {
211  return renderPass;
212  }
213 
214  inline void setRenderPass(RenderPass renderPass) override {
215  this->renderPass = renderPass;
216  }
217 
218  inline bool isActive() override {
219  return FogParticleSystemInternal::isActive();
220  }
221 
222  inline bool isAutoEmit() override {
223  return FogParticleSystemInternal::isAutoEmit();
224  }
225 
226  inline int emitParticles() override {
227  return FogParticleSystemInternal::emitParticles();
228  }
229 
230  void setAutoEmit(bool autoEmit) override;
231  void updateParticles() override;
232 
233  inline const Transform& getLocalTransform() override {
234  return FogParticleSystemInternal::getLocalTransform();
235  }
236  inline void setLocalTransform(const Transform& transform) override {
237  FogParticleSystemInternal::setLocalTransform(transform);
238  }
239  inline Texture* getTexture() {
240  return FogParticleSystemInternal::getTexture();
241  }
242 
243 };
Color 4 definition class.
Definition: Color4.h:18
Engine main class.
Definition: Engine.h:131
@ ENTITYTYPE_FOGPARTICLESYSTEM
Definition: Entity.h:97
Fog particle system entity to be used with engine class.
BoundingBox * getBoundingBox() override
FogParticleSystem(const string &id, ParticleEmitter *emitter, int32_t maxPoints, float pointSize, Texture *texture=nullptr, int32_t textureHorizontalSprites=1, int32_t textureVerticalSprites=1, float fps=10.0f)
Public constructor.
const Vector3 & getTranslation() const override
void updateParticles() override
Updates the particle entity.
const Transform & getTransform() const override
void setLocalTransform(const Transform &transform) override
Set local transform.
RenderPass getRenderPass() const override
void dispose() override
Dispose this entity.
void setTranslation(const Vector3 &translation) override
Set translation.
void removeRotation(const int idx) override
Remove rotation.
Rotation & getRotation(const int idx) override
Get rotation at given index.
const int getRotationCount() const override
const Vector3 & getRotationAxis(const int idx) const override
void initialize() override
Initiates this entity.
void setRenderPass(RenderPass renderPass) override
Set render pass.
void setReceivesShadows(bool receivesShadows) override
Enable/disable receives shadows.
void addRotation(const Vector3 &axis, const float angle) override
Add rotation.
void update() override
Update transform.
void setPickable(bool pickable) override
Set this entity pickable.
void setEffectColorMul(const Color4 &effectColorMul) override
Set effect color that will be multiplied with fragment color.
ParticleEmitter * getEmitter() override
void setTransform(const Transform &transform) override
Set transform.
const Quaternion & getRotationsQuaternion() const override
void setScale(const Vector3 &scale) override
Set scale.
const Vector3 & getScale() const override
const float getRotationAngle(const int idx) const override
BoundingBox * getWorldBoundingBox() override
const Color4 & getEffectColorMul() const override
The effect color will be multiplied with fragment color.
void setFrustumCulling(bool frustumCulling) override
Set frustum culling.
void setAutoEmit(bool autoEmit) override
Set auto emit.
void setEngine(Engine *engine) override
Set up engine.
void setEnabled(bool enabled) override
Enable/disable rendering.
const Transform & getParentTransform() const override
const Matrix4x4 & getTransformMatrix() const override
const string & getId() override
int emitParticles() override
Adds particles to this particle entity at given position.
EntityType getEntityType() override
void setContributesShadows(bool contributesShadows) override
Enable/disable contributes shadows.
void setRotationAxis(const int idx, const Vector3 &axis) override
Set rotation axis.
void setEffectColorAdd(const Color4 &effectColorAdd) override
Set effect color that will be added to fragment color.
const Color4 & getEffectColorAdd() const override
The effect color will be added to fragment color.
void setParentTransform(const Transform &parentTransform) override
Set parent transform.
const Transform & getLocalTransform() override
void setRenderer(Renderer *renderer) override
Set up renderer.
void setRotationAngle(const int idx, const float angle) override
Particle system group, which combines several particle systems into a group, to be used with engine c...
Rotation representation.
Definition: Rotation.h:18
Texture entity.
Definition: Texture.h:24
Transform which contain scale, rotations and translation.
Definition: Transform.h:29
void setRotationAngle(const int idx, const float angle)
Definition: Transform.h:155
void setRotationAxis(const int idx, const Vector3 &axis)
Set rotation axis.
Definition: Transform.h:138
void setTranslation(const Vector3 &translation)
Set translation.
Definition: Transform.h:64
void removeRotation(const int idx)
Remove rotation.
Definition: Transform.h:121
const Vector3 & getScale() const
Definition: Transform.h:71
Rotation & getRotation(const int idx)
Get rotation at given index.
Definition: Transform.h:95
void setScale(const Vector3 &scale)
Set scale.
Definition: Transform.h:79
const int getRotationCount() const
Definition: Transform.h:86
const Vector3 & getRotationAxis(const int idx) const
Definition: Transform.h:129
const Quaternion & getRotationsQuaternion() const
Definition: Transform.h:162
const Vector3 & getTranslation() const
Definition: Transform.h:56
void addRotation(const Vector3 &axis, const float angle)
Add rotation.
Definition: Transform.h:113
const float getRotationAngle(const int idx) const
Definition: Transform.h:146
Axis aligned bounding box used for frustum, this is not directly connectable with physics engine.
Definition: BoundingBox.h:26
Matrix4x4 class representing matrix4x4 mathematical structure and operations for 3d space.
Definition: Matrix4x4.h:23
Quaternion class representing quaternion mathematical structure and operations with x,...
Definition: Quaternion.h:24
Vector3 class representing vector3 mathematical structure and operations with x, y,...
Definition: Vector3.h:20
Particle system entity interface.
#define FORBID_CLASS_COPY(CLASS)
Definition: tdme.h:6