1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126 | #include "fsCParticleParameter.h"
#include "fsCParticleParameterModifier.h"
void fsCParticleParameter::finalise(fsS32 pRunningTime)
{
if (mModifier)
{
mVal = mModifier->finalise(pRunningTime, mConstantModifier);
}
}
void fsCParticleParameter::update(fsS32 pRunningTime, fsS32 pTimeDelta)
{
if (mModifier)
{
mVal += mModifier->update(pRunningTime, pTimeDelta, mConstantModifier);
}
}
void fsCParticleParameter::initialise()
{
if (mModifier)
{
if (mModifier->constant())
{
mConstantModifier = mModifier->initialise();
mVal = mEmitVal + fsCParticleParameterModifier::rndF32Get(static_cast<fsS32>(mEmitRandomRange));
}
else
{
mVal = mModifier->initialise();
}
}
else
{
mVal = mEmitVal + fsCParticleParameterModifier::rndF32Get(static_cast<fsS32>(mEmitRandomRange));
}
}
void fsCParticleParameter::randomRangeLoadDo(fsStr& pParamVals)
{
pParamVals.leadingWhitespaceTrim();
fsStr val = pParamVals.chomp(" ");
mEmitVal = mValueLoadFn(val);
pParamVals.leadingWhitespaceTrim();
val = pParamVals.chunk();
fsCParticleParameterModifier::charStrip(pParamVals);
fsF32 fltRange = mValueLoadFn(pParamVals);
mEmitVal -= fltRange;
fltRange *= 2.0f * 1024.0f;
mEmitRandomRange = fltRange;
}
void fsCParticleParameter::randomRangeLoad(fsStr& pParamVals)
{
randomRangeLoadDo(pParamVals);
}
void fsCParticleParameter::legacyParameterLoad(fsStr& pFileData)
{
fsCParticleParameterModifier::charStrip(pFileData);
fsStr paramVals = pFileData.chomp(";") + ",";
randomRangeLoad(paramVals);
}
void fsCParticleParameter::legacyParameterDeltaLoad(fsStr& pFileData)
{
fsCParticleParameterModifier::charStrip(pFileData);
fsStr paramVals = pFileData.chomp(";") + ",";
if (!mModifier)
{
mModifier = std::make_shared<fsCParticleParameterModifier>(mValueLoadFn);
}
mModifier->randomRangeLoad(paramVals);
}
void fsCParticleParameter::parameterLoad(fsStr& pFileData)
{
fsCParticleParameterModifier::charStrip(pFileData);
fsStr paramVals = pFileData.chomp(";") + ",";
if (!mModifier)
{
mModifier = std::make_shared<fsCParticleParameterModifier>(mValueLoadFn);
}
mModifier->tableLoad(paramVals);
}
fsF32 fsCParticleParameter::valueLoad(fsStr& pParamVals)
{
fsF32 val;
pParamVals.leadingWhitespaceTrim();
val = fsCParticleParameterModifier::f32Get(pParamVals);
return val;
}
void fsCParticleParameter::copy(fsCParticleParameter* const pClone)<--- Parameter 'pClone' can be declared as pointer to const
{
mConstantModifier = pClone->mConstantModifier;
mEmitRandomRange = pClone->mEmitRandomRange;
mEmitVal = pClone->mEmitVal;
mModifier = pClone->mModifier;
}
fsCParticleParameter::fsCParticleParameter(fsF32 (*pValueLoadFn)(fsStr& pFileData)) :
mEmitVal(0.0f),
mEmitRandomRange(0.0f),
mVal(0.0f),
mConstantModifier(0.0f)
{
if (pValueLoadFn)
{
mValueLoadFn = pValueLoadFn;
}
else
{
mValueLoadFn = valueLoad;
}
}
fsCParticleParameter::~fsCParticleParameter()
{
}
|