Nebula
Loading...
Searching...
No Matches
emitterattrs.h
Go to the documentation of this file.
1#pragma once
2//------------------------------------------------------------------------------
12#include "core/types.h"
14#include "math/vec4.h"
15
16//------------------------------------------------------------------------------
17namespace Particles
18{
19
20static const char* FloatAttrNames[] =
21{
22 "EmissionDuration",
23 "ActivityDistance",
24 "StartRotationMin",
25 "StartRotationMax",
26 "Gravity",
27 "ParticleStretch",
28 "VelocityRandomize",
29 "RotationRandomize",
30 "SizeRandomize",
31 "PrecalcTime",
32 "StartDelay",
33 "TextureTile",
34 "PhasesPerSecond",
35};
36
37static const char* BoolAttrNames[] =
38{
39 "Looping",
40 "StretchToStart",
41 "RenderOldestFirst",
42 "ViewAngleFade",
43 "Billboard",
44};
45static const char* IntAttrNames[] =
46{
47 "StretchDetail",
48 "AnimPhases",
49};
50
51static const char* Float4AttrNames[] =
52{
53 "WindDirection"
54};
55
56static const char* EnvelopeAttrNames[] =
57{
58 "Red",
59 "Green",
60 "Blue",
61 "Alpha",
62 "EmissionFrequency",
63 "LifeTime",
64 "StartVelocity",
65 "RotationVelocity",
66 "Size",
67 "SpreadMin",
68 "SpreadMax",
69 "AirResistance",
70 "VelocityFactor",
71 "Mass",
72 "TimeManipulator",
73 "Alignment0"
74};
75
77{
78public:
79
99
100
112
121
129
153
155 EmitterAttrs();
157 void SetFloat(FloatAttr key, float value);
159 float GetFloat(FloatAttr key) const;
161 void SetBool(BoolAttr key, bool value);
163 bool GetBool(BoolAttr key) const;
165 void SetInt(IntAttr key, int value);
167 int GetInt(IntAttr key) const;
169 void SetVec4(Float4Attr key, const Math::vec4& value);
171 const Math::vec4& GetVec4(Float4Attr key) const;
173 void SetEnvelope(EnvelopeAttr key, const EnvelopeCurve& value);
175 const EnvelopeCurve& GetEnvelope(EnvelopeAttr key) const;
176
177private:
181
187
196};
197
198//------------------------------------------------------------------------------
201inline void
203{
204 this->floatValues[key] = value;
205}
206
207//------------------------------------------------------------------------------
210inline float
212{
213 return this->floatValues[key];
214}
215
216//------------------------------------------------------------------------------
219inline void
221{
222 switch (key)
223 {
224 case Looping:
225 this->boolAttributes.looping = value;
226 break;
227 case StretchToStart:
228 this->boolAttributes.stretchToStart = value;
229 break;
231 this->boolAttributes.renderOldestFirst = value;
232 break;
233 case ViewAngleFade:
234 this->boolAttributes.viewAngleFade = value;
235 break;
236 case Billboard:
237 this->boolAttributes.billboard = value;
238 break;
239 default: n_error("unhandled enum"); break;
240 };
241}
242
243//------------------------------------------------------------------------------
246inline bool
248{
249 switch (key)
250 {
251 case Looping:
252 return this->boolAttributes.looping;
253 case StretchToStart:
254 return this->boolAttributes.stretchToStart;
256 return this->boolAttributes.renderOldestFirst;
257 case ViewAngleFade:
258 return this->boolAttributes.viewAngleFade;
259 case Billboard:
260 return this->boolAttributes.billboard;
261 default: n_error("unhandled enum"); break;
262 };
263 return false;
264}
265
266//------------------------------------------------------------------------------
269inline void
271{
272 switch (key)
273 {
274 case StretchDetail:
275 this->intAttributes.stretchDetail = value;
276 break;
277 case AnimPhases:
278 this->intAttributes.stretchDetail = value;
279 break;
280 default: n_error("unhandled enum"); break;
281 };
282}
283
284//------------------------------------------------------------------------------
287inline int
289{
290 switch (key)
291 {
292 case StretchDetail:
293 return this->intAttributes.stretchDetail;
294 case AnimPhases:
295 return this->intAttributes.stretchDetail;
296 default: n_error("unhandled enum"); break;
297 };
298 return 0;
299}
300
301//------------------------------------------------------------------------------
304inline void
306{
307 this->vec4Values[key] = value;
308}
309
310//------------------------------------------------------------------------------
313inline const Math::vec4&
315{
316 return this->vec4Values[key];
317}
318
319//------------------------------------------------------------------------------
322inline void
324{
325 this->envelopeValues[key] = value;
326}
327
328//------------------------------------------------------------------------------
331inline const EnvelopeCurve&
333{
334 return this->envelopeValues[key];
335}
336
337} // namespace Particles
338//------------------------------------------------------------------------------
void SetInt(IntAttr key, int value)
set int attribute
Definition emitterattrs.h:270
bool GetBool(BoolAttr key) const
get bool attribute
Definition emitterattrs.h:247
struct Particles::EmitterAttrs::IntAttributes intAttributes
void SetEnvelope(EnvelopeAttr key, const EnvelopeCurve &value)
set envelope attribute
Definition emitterattrs.h:323
float GetFloat(FloatAttr key) const
get float attribute
Definition emitterattrs.h:211
void SetFloat(FloatAttr key, float value)
set float attribute
Definition emitterattrs.h:202
void SetVec4(Float4Attr key, const Math::vec4 &value)
set vec4 attribute
Definition emitterattrs.h:305
EnvelopeCurve envelopeValues[NumEnvelopeAttrs]
Definition emitterattrs.h:180
FloatAttr
scalar attributes
Definition emitterattrs.h:82
@ ActivityDistance
Definition emitterattrs.h:84
@ TextureTile
Definition emitterattrs.h:94
@ StartRotationMin
Definition emitterattrs.h:85
@ StartDelay
Definition emitterattrs.h:93
@ PhasesPerSecond
Definition emitterattrs.h:95
@ RotationRandomize
Definition emitterattrs.h:90
@ Gravity
Definition emitterattrs.h:87
@ VelocityRandomize
Definition emitterattrs.h:89
@ EmissionDuration
Definition emitterattrs.h:83
@ NumFloatAttrs
Definition emitterattrs.h:97
@ SizeRandomize
Definition emitterattrs.h:91
@ ParticleStretch
Definition emitterattrs.h:88
@ PrecalcTime
Definition emitterattrs.h:92
@ StartRotationMax
Definition emitterattrs.h:86
const Math::vec4 & GetVec4(Float4Attr key) const
get vec4 attribute
Definition emitterattrs.h:314
IntAttr
integer attributes
Definition emitterattrs.h:115
@ StretchDetail
Definition emitterattrs.h:116
@ AnimPhases
Definition emitterattrs.h:117
@ NumIntAttrs
Definition emitterattrs.h:119
Float4Attr
vec4 attributes
Definition emitterattrs.h:124
@ NumFloat4Attrs
Definition emitterattrs.h:127
@ WindDirection
Definition emitterattrs.h:125
const EnvelopeCurve & GetEnvelope(EnvelopeAttr key) const
get envelope attribute
Definition emitterattrs.h:332
void SetBool(BoolAttr key, bool value)
set bool attribute
Definition emitterattrs.h:220
float floatValues[NumFloatAttrs]
Definition emitterattrs.h:179
struct Particles::EmitterAttrs::BoolAttributes boolAttributes
EmitterAttrs()
constructor
Definition emitterattrs.cc:15
int GetInt(IntAttr key) const
get int attribute
Definition emitterattrs.h:288
BoolAttr
boolean attributes
Definition emitterattrs.h:103
@ NumBoolAttrs
Definition emitterattrs.h:110
@ Billboard
Definition emitterattrs.h:108
@ RenderOldestFirst
Definition emitterattrs.h:106
@ ViewAngleFade
Definition emitterattrs.h:107
@ StretchToStart
Definition emitterattrs.h:105
@ Looping
Definition emitterattrs.h:104
EnvelopeAttr
scalar envelope attributes
Definition emitterattrs.h:132
@ LifeTime
Definition emitterattrs.h:138
@ RotationVelocity
Definition emitterattrs.h:140
@ Size
Definition emitterattrs.h:141
@ Alignment0
Definition emitterattrs.h:149
@ Blue
Definition emitterattrs.h:135
@ Alpha
Definition emitterattrs.h:136
@ Green
Definition emitterattrs.h:134
@ Red
Definition emitterattrs.h:133
@ Mass
Definition emitterattrs.h:146
@ SpreadMin
Definition emitterattrs.h:142
@ AirResistance
Definition emitterattrs.h:144
@ VelocityFactor
Definition emitterattrs.h:145
@ TimeManipulator
Definition emitterattrs.h:147
@ NumEnvelopeAttrs
Definition emitterattrs.h:151
@ EmissionFrequency
Definition emitterattrs.h:137
@ StartVelocity
Definition emitterattrs.h:139
@ SpreadMax
Definition emitterattrs.h:143
Math::vec4 vec4Values[NumFloat4Attrs]
Definition emitterattrs.h:178
An Attack/Sustain/Release envelope curve class with optional sine/cosine modulation.
Definition envelopecurve.h:20
void __cdecl n_error(const char *msg,...)
This function is called when a serious situation is encountered which requires abortion of the applic...
Definition debug.cc:138
Particle context controls playing and enabling/disabling of particle attrs inside a model.
Definition modelnode.h:37
static const char * IntAttrNames[]
Definition emitterattrs.h:45
static const char * BoolAttrNames[]
Definition emitterattrs.h:37
static const char * FloatAttrNames[]
Definition emitterattrs.h:20
static const char * EnvelopeAttrNames[]
Definition emitterattrs.h:56
static const char * Float4AttrNames[]
Definition emitterattrs.h:51
A 4D vector.
Definition vec4.h:24
Definition emitterattrs.h:189
bool stretchToStart
Definition emitterattrs.h:191
bool viewAngleFade
Definition emitterattrs.h:193
bool billboard
Definition emitterattrs.h:194
bool looping
Definition emitterattrs.h:190
bool renderOldestFirst
Definition emitterattrs.h:192
Definition emitterattrs.h:183
uint stretchDetail
Definition emitterattrs.h:184
uint animPhases
Definition emitterattrs.h:185
unsigned int uint
Definition types.h:33