Plasma Engine  2.0
Loading...
Searching...
No Matches
Declarations.h
1#pragma once
2
3#include <Core/ResourceManager/ResourceHandle.h>
4#include <Foundation/Containers/HybridArray.h>
5#include <Foundation/Reflection/Reflection.h>
6#include <Foundation/Strings/HashedString.h>
7#include <Foundation/Strings/String.h>
8#include <Foundation/Types/Id.h>
9#include <Foundation/Types/RefCounted.h>
10#include <ParticlePlugin/ParticlePluginDLL.h>
11
12class plWorld;
19class plParticleType;
22class plRandom;
23struct plParticleEvent;
32
34
36
38class PL_PARTICLEPLUGIN_DLL plParticleEffectHandle
39{
40 PL_DECLARE_HANDLE_TYPE(plParticleEffectHandle, plParticleEffectId);
41};
42
43
44struct PL_PARTICLEPLUGIN_DLL plParticleSystemState
45{
46 enum Enum
47 {
48 Active,
49 EmittersFinished,
50 OnlyReacting,
51 Inactive,
52 };
53};
54
55class PL_PARTICLEPLUGIN_DLL plParticleStreamBinding
56{
57public:
58 void UpdateBindings(const plProcessingStreamGroup* pGroup) const;
59 void Clear() { m_Bindings.Clear(); }
60
61private:
62 friend class plParticleSystemInstance;
63
64 struct Binding
65 {
66 plString m_sName;
67 plProcessingStream** m_ppStream;
68 };
69
71};
72
74
75struct PL_PARTICLEPLUGIN_DLL plParticleTypeRenderMode
76{
77 using StorageType = plUInt8;
78
79 enum Enum
80 {
81 Additive,
82 Blended,
83 Opaque,
84 Distortion,
85 BlendedBackground,
86 BlendedForeground,
87 BlendAdd,
88 Default = Additive
89 };
90};
91
92PL_DECLARE_REFLECTABLE_TYPE(PL_PARTICLEPLUGIN_DLL, plParticleTypeRenderMode);
93
95
96struct PL_PARTICLEPLUGIN_DLL plParticleLightingMode
97{
98 using StorageType = plUInt8;
99
100 enum Enum
101 {
102 Fullbright,
103 VertexLit,
104 Default = Fullbright
105 };
106};
107
108PL_DECLARE_REFLECTABLE_TYPE(PL_PARTICLEPLUGIN_DLL, plParticleLightingMode);
109
111
113struct PL_PARTICLEPLUGIN_DLL plEffectInvisibleUpdateRate
114{
115 using StorageType = plUInt8;
116
117 enum Enum
118 {
119 FullUpdate,
120 Max20fps,
121 Max10fps,
122 Max5fps,
123 Pause,
124 Discard,
125
126 Default = Max10fps
127 };
128};
129
130PL_DECLARE_REFLECTABLE_TYPE(PL_PARTICLEPLUGIN_DLL, plEffectInvisibleUpdateRate);
131
133
134struct PL_PARTICLEPLUGIN_DLL plParticleTextureAtlasType
135{
136 using StorageType = plUInt8;
137
138 enum Enum
139 {
140 None,
141
142 RandomVariations,
143 FlipbookAnimation,
144 RandomYAnimatedX,
145
146 Default = None
147 };
148};
149
150PL_DECLARE_REFLECTABLE_TYPE(PL_PARTICLEPLUGIN_DLL, plParticleTextureAtlasType);
151
153
154struct PL_PARTICLEPLUGIN_DLL plParticleColorGradientMode
155{
156 using StorageType = plUInt8;
157
158 enum Enum
159 {
160 Age,
161 Speed,
162
163 Default = Age
164 };
165};
166
167PL_DECLARE_REFLECTABLE_TYPE(PL_PARTICLEPLUGIN_DLL, plParticleColorGradientMode);
168
169
171
172struct PL_PARTICLEPLUGIN_DLL plParticleOutOfBoundsMode
173{
174 using StorageType = plUInt8;
175
176 enum Enum
177 {
178 Teleport,
179 Die,
180
181 Default = Teleport
182 };
183};
184
185PL_DECLARE_REFLECTABLE_TYPE(PL_PARTICLEPLUGIN_DLL, plParticleOutOfBoundsMode);
186
188
190{
191 PL_DECLARE_POD_TYPE();
192 plHashedString m_sName;
193 float m_Value;
194};
195
197{
198 PL_DECLARE_POD_TYPE();
199 plHashedString m_sName;
200 plColor m_Value;
201};
202
plColor represents an RGBA color in linear color space. Values are stored as float,...
Definition Color.h:44
This class is optimized to take nearly no memory (sizeof(void*)) and to allow very fast checks whethe...
Definition HashedString.h:25
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Definition ParticleBehavior.h:30
Definition ParticleEffectDescriptor.h:8
A handle to a particle effect.
Definition Declarations.h:39
Definition ParticleEffectInstance.h:25
Definition Declarations.h:204
Base class for stream spawners that are used by plParticleEmitter's.
Definition ParticleEmitter.h:38
Base class for all particle event reactions.
Definition ParticleEventReaction.h:12
Definition ParticleEventReaction.h:29
Base class for all particle Finalizers.
Definition ParticleFinalizer.h:14
Definition ParticleFinalizer.h:25
Base class for stream spawners that are used by plParticleEmitter's.
Definition ParticleInitializer.h:34
Definition Declarations.h:56
Definition ParticleSystemDescriptor.h:15
A particle system stores all data for one 'layer' of a running particle effect.
Definition ParticleSystemInstance.h:15
Definition ParticleType.h:38
This world module stores all particle effect data that is active in a given plWorld instance.
Definition ParticleWorldModule.h:24
A stream group encapsulates the streams and the corresponding data processors.
Definition ProcessingStreamGroup.h:25
A single stream in a stream group holding contiguous data of a given type.
Definition ProcessingStream.h:8
A random number generator. Currently uses the WELL512 algorithm.
Definition Random.h:9
Base class for reference counted objects.
Definition RefCounted.h:52
Definition RenderPipelinePass.h:26
A world encapsulates a scene graph of game objects and various component managers and their component...
Definition World.h:22
What to do when an effect is not visible.
Definition Declarations.h:114
A generic id class that holds an id combined of an instance index and a generation counter.
Definition Id.h:52
Definition Declarations.h:155
Definition Declarations.h:197
Definition Declarations.h:190
Definition ParticleEvent.h:9
Definition Declarations.h:97
Definition Declarations.h:173
Definition Declarations.h:45
Definition Declarations.h:135
Definition Declarations.h:76
Definition Declarations.h:51