Plasma Engine  2.0
Loading...
Searching...
No Matches
ParticleEmitter_Continuous.h
1#pragma once
2
3#include <Core/ResourceManager/ResourceHandle.h>
4#include <Foundation/Types/VarianceTypes.h>
5#include <ParticlePlugin/Emitter/ParticleEmitter.h>
6
8
9class PL_PARTICLEPLUGIN_DLL plParticleEmitterFactory_Continuous final : public plParticleEmitterFactory
10{
12
13public:
15
16 virtual const plRTTI* GetEmitterType() const override;
17 virtual void CopyEmitterProperties(plParticleEmitter* pEmitter, bool bFirstTime) const override;
18 virtual void QueryMaxParticleCount(plUInt32& out_uiMaxParticlesAbs, plUInt32& out_uiMaxParticlesPerSecond) const override;
19
20 virtual void Save(plStreamWriter& inout_stream) const override;
21 virtual void Load(plStreamReader& inout_stream) override;
22
23public:
24 plTime m_StartDelay;
25
26 plUInt32 m_uiSpawnCountPerSec;
27 plUInt32 m_uiSpawnCountPerSecRange;
28 plString m_sSpawnCountScaleParameter;
29
30 plCurve1DResourceHandle m_hCountCurve;
31 plTime m_CurveDuration;
32
33 void SetCountCurveFile(const char* szFile);
34 const char* GetCountCurveFile() const;
35};
36
37
38class PL_PARTICLEPLUGIN_DLL plParticleEmitter_Continuous final : public plParticleEmitter
39{
40 PL_ADD_DYNAMIC_REFLECTION(plParticleEmitter_Continuous, plParticleEmitter);
41
42public:
43 plTime m_StartDelay; // delay before the emitter becomes active, to sync with other systems, only used once, has no effect later on
44
45 plUInt32 m_uiSpawnCountPerSec;
46 plUInt32 m_uiSpawnCountPerSecRange;
47 plTempHashedString m_sSpawnCountScaleParameter;
48
49 plCurve1DResourceHandle m_hCountCurve;
50 plTime m_CurveDuration;
51
52
53 virtual void CreateRequiredStreams() override {}
54
55protected:
56 virtual bool IsContinuous() const override { return true; }
57
58 virtual void InitializeElements(plUInt64 uiStartIndex, plUInt64 uiNumElements) override {}
59 virtual void OnFinalize() override;
60
61 virtual plParticleEmitterState IsFinished() override;
62 virtual plUInt32 ComputeSpawnCount(const plTime& tDiff) override;
63
64 plTime m_CountCurveTime;
65 plTime m_TimeSinceRandom;
66 float m_fCurSpawnPerSec;
67 float m_fCurSpawnCounter;
68};
Definition ParticleEmitter_Continuous.h:39
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_Continuous.h:58
Definition ParticleEmitter_Continuous.h:10
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