Shkyera Engine
Easy to use, game engine for Python
Loading...
Searching...
No Matches
ParticleEmitterComponent.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <glm/glm.hpp>
4
8
9namespace shkyera {
10
11struct ParticleEmitterComponent : BaseComponent<ParticleEmitterComponent> {
12 bool enabled{true};
13
14 float gravity{0.1f};
15
16 float emittedAtRadius{1.0f};
17 float emittedPerSecond{30.0f};
19
20 float initialVelocity{1.0f};
23
24 float lifetime{1.0f};
25 float lifetimeVariance{0.1f};
26
29 float endParticleSize{0.0f};
31
35 float endTransparency{0.1f};
37
38 struct state {
39 double accumulatedEmittedParticles{0.0}; //< Used for spawning at low emission rates
40 size_t nextFreeIndex{0}; //< Used for ring-buffer behavior
41
42 std::vector<float> lifetimes{};
43 std::vector<float> endToStartProgress{};
44 std::vector<float> initialLifetimes{};
45
46 std::vector<float> sizes{};
47 std::vector<float> initialSizes{};
48 std::vector<float> endSizes{};
49
50 std::vector<float> transparencies{};
51 std::vector<float> initialTransparencies{};
52 std::vector<float> endTransparencies{};
53
54 std::vector<glm::vec3> positions{}; //< World CS
55 std::vector<glm::vec3> velocities{}; //< World CS
56 } state;
57};
58
59} // namespace shkyera
Base component for implementing update functionality.
Definition BaseComponent.hpp:17
Definition Asset.hpp:6
Definition Clock.hpp:9
Definition ParticleEmitterComponent.hpp:38
std::vector< float > transparencies
Definition ParticleEmitterComponent.hpp:50
std::vector< float > initialLifetimes
Definition ParticleEmitterComponent.hpp:44
std::vector< float > initialSizes
Definition ParticleEmitterComponent.hpp:47
std::vector< float > endTransparencies
Definition ParticleEmitterComponent.hpp:52
std::vector< glm::vec3 > positions
Definition ParticleEmitterComponent.hpp:54
std::vector< glm::vec3 > velocities
Definition ParticleEmitterComponent.hpp:55
std::vector< float > initialTransparencies
Definition ParticleEmitterComponent.hpp:51
std::vector< float > endSizes
Definition ParticleEmitterComponent.hpp:48
size_t nextFreeIndex
Definition ParticleEmitterComponent.hpp:40
std::vector< float > sizes
Definition ParticleEmitterComponent.hpp:46
std::vector< float > endToStartProgress
Definition ParticleEmitterComponent.hpp:43
double accumulatedEmittedParticles
Definition ParticleEmitterComponent.hpp:39
std::vector< float > lifetimes
Definition ParticleEmitterComponent.hpp:42
Definition ParticleEmitterComponent.hpp:11
float endTransparency
Definition ParticleEmitterComponent.hpp:35
float emittedPerSecondVariance
Definition ParticleEmitterComponent.hpp:18
float endTransparencyVariance
Definition ParticleEmitterComponent.hpp:36
HandleAndAsset< Material > material
Definition ParticleEmitterComponent.hpp:32
bool enabled
Definition ParticleEmitterComponent.hpp:12
float initialParticleSizeVariance
Definition ParticleEmitterComponent.hpp:28
float initialVelocityDispersion
Definition ParticleEmitterComponent.hpp:22
float lifetime
Definition ParticleEmitterComponent.hpp:24
float emittedPerSecond
Definition ParticleEmitterComponent.hpp:17
float initialVelocityVariance
Definition ParticleEmitterComponent.hpp:21
float initialTransparencyVariance
Definition ParticleEmitterComponent.hpp:34
float endParticleSize
Definition ParticleEmitterComponent.hpp:29
float emittedAtRadius
Definition ParticleEmitterComponent.hpp:16
float initialParticleSize
Definition ParticleEmitterComponent.hpp:27
float lifetimeVariance
Definition ParticleEmitterComponent.hpp:25
float gravity
Definition ParticleEmitterComponent.hpp:14
float initialTransparency
Definition ParticleEmitterComponent.hpp:33
float initialVelocity
Definition ParticleEmitterComponent.hpp:20
float endParticleSizeVariance
Definition ParticleEmitterComponent.hpp:30