2#include "Queryable.hpp"
4#include "RGL/Types.hpp"
6#include "ComponentWithOwner.hpp"
10 struct BillboardParticleRenderMaterialInstance;
11 struct MeshParticleRenderMaterialInstance;
12 struct ParticleUpdateMaterialInstance;
15 uint32_t aliveParticleCount = 0;
16 uint32_t freeListCount = 0;
17 uint32_t particlesCreatedThisFrame = 0;
33 enum class Mode : uint8_t {
36 } mode = Mode::Stream;
44 const auto GetRenderMaterial()
const {
45 return renderMaterial;
48 const auto GetUpdateMaterial()
const {
49 return updateMaterial;
67 resetRequested =
true;
70 bool IsEmitting()
const {
71 return emittingThisFrame;
74 auto GetMaxParticles()
const {
75 return maxParticleCount;
78 void SetEmissionRate(uint32_t rate);
82 uint32_t GetNextParticleSpawnCount();
87 void SetFrozen(
bool frozen) {
91 void SetVisibility(
bool visible) {
93 SetFrozen(!isVisible);
96 bool GetFrozen()
const {
100 bool GetVisible()
const {
106 particleDataBuffer =
nullptr,
107 particleReuseFreelist =
nullptr,
108 spawnedThisFrameList =
nullptr,
109 activeParticleIndexBuffer =
nullptr,
110 indirectComputeBuffer =
nullptr,
111 indirectDrawBuffer =
nullptr,
112 emitterStateBuffer =
nullptr,
113 particleLifeBuffer =
nullptr,
114 indirectDrawBufferStaging =
nullptr,
115 meshAliveParticleIndexBuffer =
nullptr;
117 ParticleRenderMaterialVariant renderMaterial;
118 Ref<ParticleUpdateMaterialInstance> updateMaterial;
120 double lastSpawnTime = 0;
127 resetRequested =
false;
132 uint32_t maxTotalParticlesOffset = 0;
135 bool emittingThisFrame : 1 =
false;
136 bool isVisible : 1 =
true;
137 bool isFrozen : 1 =
false;
138 bool resetRequested : 1 =
false;
Definition ComponentWithOwner.hpp:6
Definition RenderEngine.hpp:64
Definition concurrentqueue.h:747
uint32 uint32_t
Definition fwd.hpp:131
Definition Animation.hpp:6
Definition ParticleEmitter.hpp:14
Definition ParticleEmitter.hpp:20
Definition ParticleEmitter.hpp:31
void Reset()
Definition ParticleEmitter.hpp:66
void Play()
Definition ParticleEmitter.cpp:66
void Stop()
Definition ParticleEmitter.cpp:71
Definition Queryable.hpp:21