Plasma Engine  2.0
Loading...
Searching...
No Matches
ParticleSystemDescriptor.h
1#pragma once
2
3#include <Foundation/DataProcessing/Stream/ProcessingStream.h>
4#include <Foundation/DataProcessing/Stream/ProcessingStreamGroup.h>
5#include <Foundation/Reflection/Reflection.h>
6#include <Foundation/Types/VarianceTypes.h>
7#include <ParticlePlugin/ParticlePluginDLL.h>
8
13
14class PL_PARTICLEPLUGIN_DLL plParticleSystemDescriptor final : public plReflectedClass
15{
16 PL_ADD_DYNAMIC_REFLECTION(plParticleSystemDescriptor, plReflectedClass);
17
18public:
21
24
25 const plHybridArray<plParticleEmitterFactory*, 1>& GetEmitterFactories() const { return m_EmitterFactories; }
26
27 void AddInitializerFactory(plParticleInitializerFactory* pFactory) { m_InitializerFactories.PushBack(pFactory); }
28 void RemoveInitializerFactory(plParticleInitializerFactory* pFactory) { m_InitializerFactories.RemoveAndCopy(pFactory); }
29 const plHybridArray<plParticleInitializerFactory*, 4>& GetInitializerFactories() const { return m_InitializerFactories; }
30
31 void AddBehaviorFactory(plParticleBehaviorFactory* pFactory) { m_BehaviorFactories.PushBack(pFactory); }
32 void RemoveBehaviorFactory(plParticleBehaviorFactory* pFactory) { m_BehaviorFactories.RemoveAndCopy(pFactory); }
33 const plHybridArray<plParticleBehaviorFactory*, 4>& GetBehaviorFactories() const { return m_BehaviorFactories; }
34
35 void AddTypeFactory(plParticleTypeFactory* pFactory) { m_TypeFactories.PushBack(pFactory); }
36 void RemoveTypeFactory(plParticleTypeFactory* pFactory) { m_TypeFactories.RemoveAndCopy(pFactory); }
37 const plHybridArray<plParticleTypeFactory*, 2>& GetTypeFactories() const { return m_TypeFactories; }
38
39 const plHybridArray<plParticleFinalizerFactory*, 2>& GetFinalizerFactories() const { return m_FinalizerFactories; }
40
41 plTime GetAvgLifetime() const;
42
43 bool m_bVisible;
44
45 plVarianceTypeTime m_LifeTime;
46 plString m_sOnDeathEvent;
47 plString m_sLifeScaleParameter;
48
50
51 void Save(plStreamWriter& inout_stream) const;
52 void Load(plStreamReader& inout_stream);
53
54private:
55 void ClearEmitters();
56 void ClearInitializers();
57 void ClearBehaviors();
58 void ClearTypes();
59 void ClearFinalizers();
60 void SetupDefaultProcessors();
61
62 plString m_sName;
68};
void PushBack(const T &value)
Pushes value at the end of the array.
Definition ArrayBase_inl.h:333
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Base class for all particle behaviors.
Definition ParticleBehavior.h:14
Base class for all particle emitters.
Definition ParticleEmitter.h:14
Base class for all particle emitters.
Definition ParticleInitializer.h:16
Definition ParticleSystemDescriptor.h:15
const plHybridArray< plParticleEmitterFactory *, 1 > & GetEmitterFactories() const
Properties.
Definition ParticleSystemDescriptor.h:25
Definition ParticleType.h:22
All classes that should be dynamically reflectable, need to be derived from this base class.
Definition DynamicRTTI.h:86
Interface for binary in (read) streams.
Definition Stream.h:22
Interface for binary out (write) streams.
Definition Stream.h:107
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12
Definition VarianceTypes.h:49