Plasma Engine  2.0
Loading...
Searching...
No Matches
ParticleEmitter_Burst.h
1#pragma once
2
3#include <Foundation/Types/VarianceTypes.h>
4#include <ParticlePlugin/Emitter/ParticleEmitter.h>
5
6class PL_PARTICLEPLUGIN_DLL plParticleEmitterFactory_Burst final : public plParticleEmitterFactory
7{
9
10public:
12
13 virtual const plRTTI* GetEmitterType() const override;
14 virtual void CopyEmitterProperties(plParticleEmitter* pEmitter, bool bFirstTime) const override;
15 virtual void QueryMaxParticleCount(plUInt32& out_uiMaxParticlesAbs, plUInt32& out_uiMaxParticlesPerSecond) const override;
16
17 virtual void Save(plStreamWriter& inout_stream) const override;
18 virtual void Load(plStreamReader& inout_stream) override;
19
20public:
21 plTime m_Duration;
22 plTime m_StartDelay;
23
24 plUInt32 m_uiSpawnCountMin;
25 plUInt32 m_uiSpawnCountRange;
26 plString m_sSpawnCountScaleParameter;
27};
28
29
30class PL_PARTICLEPLUGIN_DLL plParticleEmitter_Burst final : public plParticleEmitter
31{
32 PL_ADD_DYNAMIC_REFLECTION(plParticleEmitter_Burst, plParticleEmitter);
33
34public:
35 plTime m_Duration; // overall duration in which the emitter is considered active, 0 for single frame
36 plTime m_StartDelay; // delay before the emitter becomes active, to sync with other systems, only used once, has no effect later on
37
38 plUInt32 m_uiSpawnCountMin;
39 plUInt32 m_uiSpawnCountRange;
40 plTempHashedString m_sSpawnCountScaleParameter;
41
42 virtual void CreateRequiredStreams() override {}
43
44protected:
45 virtual void OnFinalize() override;
46 virtual void InitializeElements(plUInt64 uiStartIndex, plUInt64 uiNumElements) override {}
47
48 virtual plParticleEmitterState IsFinished() override;
49 virtual plUInt32 ComputeSpawnCount(const plTime& tDiff) override;
50
51 plUInt32 m_uiSpawnCountLeft = 0;
52 float m_fSpawnPerSecond = 0;
53 float m_fSpawnAccu = 0;
54};
Definition ParticleEmitter_Burst.h:31
virtual void InitializeElements(plUInt64 uiStartIndex, plUInt64 uiNumElements) override
This method needs to be implemented in order to initialize new elements to specific values.
Definition ParticleEmitter_Burst.h:46
Definition ParticleEmitter_Burst.h:7
Base class for all particle emitters.
Definition ParticleEmitter.h:14
Base class for stream spawners that are used by plParticleEmitter's.
Definition ParticleEmitter.h:38
This class holds information about reflected types. Each instance represents one type that is known t...
Definition RTTI.h:30
Interface for binary in (read) streams.
Definition Stream.h:22
Interface for binary out (write) streams.
Definition Stream.h:107
A class to use together with plHashedString for quick comparisons with temporary strings that need no...
Definition HashedString.h:151
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12