TDME2
1.9.200
src
tdme
engine
subsystems
particlesystem
PointParticleEmitter.cpp
Go to the documentation of this file.
1
#include <
tdme/engine/subsystems/particlesystem/PointParticleEmitter.h
>
2
3
#include <
tdme/tdme.h
>
4
#include <
tdme/engine/Color4.h
>
5
#include <
tdme/engine/subsystems/particlesystem/Particle.h
>
6
#include <
tdme/engine/Transform.h
>
7
#include <
tdme/math/Math.h
>
8
#include <
tdme/math/Matrix4x4.h
>
9
#include <
tdme/math/Vector3.h
>
10
11
using
tdme::engine::Color4
;
12
using
tdme::engine::subsystems::particlesystem::Particle
;
13
using
tdme::engine::subsystems::particlesystem::PointParticleEmitter
;
14
using
tdme::engine::Transform
;
15
using
tdme::math::Math
;
16
using
tdme::math::Matrix4x4
;
17
using
tdme::math::Vector3
;
18
19
PointParticleEmitter::PointParticleEmitter(int32_t count, int64_t lifeTime, int64_t lifeTimeRnd,
float
mass,
float
massRnd,
const
Vector3
& position,
const
Vector3
& velocity,
const
Vector3
& velocityRnd,
const
Color4
& colorStart,
const
Color4
& colorEnd)
20
{
21
this->count =
count
;
22
this->lifeTime =
lifeTime
;
23
this->lifeTimeRnd =
lifeTimeRnd
;
24
this->mass =
mass
;
25
this->massRnd =
massRnd
;
26
this->position.
set
(
position
);
27
this->
worldPosition
.
set
(position);
28
this->velocity.
set
(
velocity
);
29
this->velocityRnd.
set
(
velocityRnd
);
30
this->colorStart.
set
(
colorStart
);
31
this->colorEnd.
set
(
colorEnd
);
32
}
33
34
void
PointParticleEmitter::emit
(
Particle
* particle)
35
{
36
// set up particle
37
particle->
active
=
true
;
38
particle->
spriteIndex
= 0.0f;
39
particle->
position
.
set
(0.0f, 0.0f, 0.0f);
40
particle->
velocity
.
set
(
41
velocity
[0] + (Math::random() *
velocityRnd
[0] * (Math::random() > 0.5 ? +1.0f : -1.0f)),
42
velocity
[1] + (Math::random() *
velocityRnd
[1] * (Math::random() > 0.5 ? +1.0f : -1.0f)),
43
velocity
[2] + (Math::random() *
velocityRnd
[2] * (Math::random() > 0.5 ? +1.0f : -1.0f))
44
);
45
particle->
mass
=
mass
+
static_cast<
float
>
((Math::random() * (
massRnd
)));
46
particle->
lifeTimeMax
=
lifeTime
+
static_cast<
int64_t
>
((Math::random() *
lifeTimeRnd
));
47
particle->
lifeTimeCurrent
= 0LL;
48
particle->
color
.
set
(
colorStart
);
49
particle->
colorAdd
.
set
(
50
(
colorEnd
.
getRed
() -
colorStart
.
getRed
()) / particle->
lifeTimeMax
,
51
(
colorEnd
.
getGreen
() -
colorStart
.
getGreen
()) / particle->
lifeTimeMax
,
52
(
colorEnd
.
getBlue
() -
colorStart
.
getBlue
()) / particle->
lifeTimeMax
,
53
(
colorEnd
.
getAlpha
() -
colorStart
.
getAlpha
()) / particle->
lifeTimeMax
54
);
55
}
56
57
void
PointParticleEmitter::setTransform
(
const
Transform
& transform)
58
{
59
//
60
const
auto
& transformMatrix = transform.
getTransformMatrix
();
61
// world position
62
worldPosition
= transformMatrix.multiply(
position
);
63
}
Color4.h
Math.h
Matrix4x4.h
Particle.h
PointParticleEmitter.h
Transform.h
Vector3.h
tdme::engine::Color4
Color 4 definition class.
Definition:
Color4.h:18
tdme::engine::Color4::getRed
float getRed() const
Definition:
Color4.h:92
tdme::engine::Color4::getGreen
float getGreen() const
Definition:
Color4.h:107
tdme::engine::Color4::getAlpha
float getAlpha() const
Definition:
Color4.h:137
tdme::engine::Color4::getBlue
float getBlue() const
Definition:
Color4.h:122
tdme::engine::Color4::set
void set(float r, float g, float b, float a)
Sets this color by its components.
Definition:
Color4.h:66
tdme::engine::Transform
Transform which contain scale, rotations and translation.
Definition:
Transform.h:29
tdme::engine::Transform::getTransformMatrix
const Matrix4x4 & getTransformMatrix() const
Definition:
Transform.h:169
tdme::engine::subsystems::particlesystem::PointParticleEmitter
Point particle emitter.
Definition:
PointParticleEmitter.h:25
tdme::engine::subsystems::particlesystem::PointParticleEmitter::worldPosition
Vector3 worldPosition
Definition:
PointParticleEmitter.h:33
tdme::engine::subsystems::particlesystem::PointParticleEmitter::colorEnd
Color4 colorEnd
Definition:
PointParticleEmitter.h:38
tdme::engine::subsystems::particlesystem::PointParticleEmitter::count
int32_t count
Definition:
PointParticleEmitter.h:27
tdme::engine::subsystems::particlesystem::PointParticleEmitter::velocityRnd
Vector3 velocityRnd
Definition:
PointParticleEmitter.h:35
tdme::engine::subsystems::particlesystem::PointParticleEmitter::velocity
Vector3 velocity
Definition:
PointParticleEmitter.h:34
tdme::engine::subsystems::particlesystem::PointParticleEmitter::colorStart
Color4 colorStart
Definition:
PointParticleEmitter.h:37
tdme::engine::subsystems::particlesystem::PointParticleEmitter::setTransform
void setTransform(const Transform &transform) override
Update transform with given transform.
Definition:
PointParticleEmitter.cpp:57
tdme::engine::subsystems::particlesystem::PointParticleEmitter::lifeTimeRnd
int64_t lifeTimeRnd
Definition:
PointParticleEmitter.h:29
tdme::engine::subsystems::particlesystem::PointParticleEmitter::mass
float mass
Definition:
PointParticleEmitter.h:30
tdme::engine::subsystems::particlesystem::PointParticleEmitter::lifeTime
int64_t lifeTime
Definition:
PointParticleEmitter.h:28
tdme::engine::subsystems::particlesystem::PointParticleEmitter::position
Vector3 position
Definition:
PointParticleEmitter.h:32
tdme::engine::subsystems::particlesystem::PointParticleEmitter::emit
void emit(Particle *particle) override
Emits particles.
Definition:
PointParticleEmitter.cpp:34
tdme::engine::subsystems::particlesystem::PointParticleEmitter::massRnd
float massRnd
Definition:
PointParticleEmitter.h:31
tdme::math::Math
Standard math functions.
Definition:
Math.h:19
tdme::math::Matrix4x4
Matrix4x4 class representing matrix4x4 mathematical structure and operations for 3d space.
Definition:
Matrix4x4.h:23
tdme::math::Vector3
Vector3 class representing vector3 mathematical structure and operations with x, y,...
Definition:
Vector3.h:20
tdme::math::Vector3::set
Vector3 & set(float x, float y, float z)
Sets this vector3 by its components.
Definition:
Vector3.h:70
tdme::engine::subsystems::particlesystem::Particle
Particle entity.
Definition:
Particle.h:19
tdme::engine::subsystems::particlesystem::Particle::active
bool active
Definition:
Particle.h:20
tdme::engine::subsystems::particlesystem::Particle::colorAdd
Color4 colorAdd
Definition:
Particle.h:28
tdme::engine::subsystems::particlesystem::Particle::velocity
Vector3 velocity
Definition:
Particle.h:22
tdme::engine::subsystems::particlesystem::Particle::mass
float mass
Definition:
Particle.h:24
tdme::engine::subsystems::particlesystem::Particle::lifeTimeCurrent
int64_t lifeTimeCurrent
Definition:
Particle.h:26
tdme::engine::subsystems::particlesystem::Particle::spriteIndex
float spriteIndex
Definition:
Particle.h:21
tdme::engine::subsystems::particlesystem::Particle::lifeTimeMax
int64_t lifeTimeMax
Definition:
Particle.h:25
tdme::engine::subsystems::particlesystem::Particle::position
Vector3 position
Definition:
Particle.h:23
tdme::engine::subsystems::particlesystem::Particle::color
Color4 color
Definition:
Particle.h:27
tdme.h
Generated by
1.9.1