Fission FSN
Loading...
Searching...
No Matches
fsCParticleData.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: fsCParticleData.h
4*
5* Purpose: Shared instance of particle parameters.
6*
7*********************************************************************/
8
9#ifndef fsCParticleDatahdr
10#define fsCParticleDatahdr
11
12#include <memory>
13
14#include <fsCore/fsStr.h>
15#include <fsCore/fsVec2d.h>
16#include <fsCore/fsPoint.h>
17#include <fsCore/fsSColour.h>
18
20
22#include "fsCParticleCloud.h"
23
24class fsIParticle;
25struct fsPoint;
27class fsCEntity;
30class fsCBrush;
31
32
34{
36
37public:
38
40 {
42 fsF32 valueGet(fsS32 pTime);
43 fsS32 periodGet() const;
44
45 void offsetSet();
46 void rangeSet(fsF32 pOscillationRange, fsF32 pTimeRange);
47 void dataAdd(fsS32 pDuration, fsF32 pOffset);
48
49 std::shared_ptr<fsCGraph<fsF32>> mGraph;
54 };
55
57 {
58 fsSParticleEmmitParams(std::vector<std::unique_ptr<fsIParticle>>& pParticleCache,
59 const fsPoint& pSpawnPosition,
60 fsCEntity* const pParentEnt,
61 fsS32 pNumToEmit,
62 fsBool pPreRunPhase,
63 fsIParticleCloud* pSpawnCloud) :
64 mParticleCache(pParticleCache),
65 mSpawnPosition(pSpawnPosition),
66 mParentEnt(pParentEnt),
67 mNumToEmit(pNumToEmit),
68 mPreRunPhase(pPreRunPhase),
69 mSpawnCloud(pSpawnCloud)
70 {
71 }
72
73 std::vector<std::unique_ptr<fsIParticle>>& mParticleCache;
79 };
80
81 static fsF32 rndF32Get(fsS32 pRange);
82
83 fsBool pulseGet() const { return mPulse; }
84 fsS32 preRunPhaseTimeGet() const { return mPrerunMs; }
85
86 fsS32 emitterLifetimeGet() const { return mEmitterLifeMs; }
87
88 fsS32 lifetimeGet() const { return mParticleLifeMs; }
89 fsS32 maxParticlesGet() const { return mMaxParticles; }
90 fsF32 particlesEmitPerSecondGet() const { return mEmitSpeedPerSec; }
91
92 fsStr const& collectablTypeGet() const { return mCollectableType; }
93 fsS32 collectableCountGet() const { return mCollectableCount; }
94 fsBool linkedToEmitterGet() const { return mLinkToEmitter; }
95
96 fsS32 particlesEmit(const fsSParticleEmmitParams& pEmmitParams) const;
97
98 void particleCacheCreate(std::vector<std::unique_ptr<fsIParticle>>& pParticleCache, fsS32 pMaxParticles);
99
101
103
104 virtual ~fsCParticleData();
105
106protected:
107
108private:
109
110 std::unique_ptr<fsIParticle> particleParticleCreate() const;
111 std::unique_ptr<fsIParticle> animationParticleCreate() const;
112 std::unique_ptr<fsIParticle> spriteParticleCreate() const;
113
114 fsVec2d parentEntBasedStartPosGet(fsCEntity* pParentEnt) const;
115
116 void particleReset(fsIParticle* pParticle, fsS32 pIndex, const fsSParticleEmmitParams& pEmmitParams) const;
117 void particlePosReset(fsIParticle* pParticle, fsS32 pIndex, const fsSParticleEmmitParams& pEmmitParams) const;
118 void particleScaleReset(fsIParticle* pParticle) const;
119 void particleAngleReset(fsIParticle* pParticle) const;
120
121 static fsVec2d rndVec2Get(const fsPoint& pRange);
122 void scaleYCreate();
123
124 void emmiterLoad(const fsCResourceName& pParticleDataFilename);
125 void brushLoad(const fsCResourceName& pBrushFileName);
126 void animDataLoad(const fsCResourceName& pAnimFileName);
127 void sfxFileNameSet(const fsStr& pFileName);
128
129
130 fsVec2d mPivot;
131
132 fsVec2d mVelocityUV;
133
137
138
139 fsBool mPulse;
140 fsStr mCollectableType;
141 fsS32 mCollectableCount;
142
143 fsBool mLinkToEmitter;
144 fsS32 mMaxParticles;
145 fsS32 mParticleLifeMs;
146 fsF32 mEmitSpeedPerSec;
147
148 fsVec2d mEmitPos;
149 fsPoint mEmitPosRange;
150 fsVec2d mVelocity;
151 fsPoint mVelocityRange;
152 fsVec2d mVelocityDelta;
153 fsPoint mVelocityDeltaRange;
154
155 fsS32 mAlphaBlendMode;
156
157 fsS32 mPrerunMs;
158
159 fsS32 mEmitterLifeMs;
160
161 fsSColour mColour;
162
163 std::shared_ptr<fsSOscillationGraph> mHorizontalOscillationGraph;
164 std::shared_ptr<fsSOscillationGraph> mVerticalOscillationGraph;
165 fsCGraph<fsSColour>* mColourGraph;
166
167 std::vector<std::shared_ptr<fsCBrush>> mSprBrush;
168 std::vector<std::shared_ptr<fsCBrush>>::iterator mCurrentSprBrush;
169
170 std::shared_ptr<fsIAnimationData> mAnimData;
171 fsCParticleDataInstance mParticleParticleData;
172
173 fsStr mSFXFileName;
174
175#if !defined fsRELEASE
176 fsStr mFileName;
177#endif
178};
179
180#endif
Definition fsCBrush.h:26
Definition fsCEntity.h:39
Definition fsCGraph.h:24
static fsF32 rndF32Get(fsS32 pRange)
Definition fsCParticleData.cpp:230
fsF32 particlesEmitPerSecondGet() const
Definition fsCParticleData.h:90
void particleCacheCreate(std::vector< std::unique_ptr< fsIParticle > > &pParticleCache, fsS32 pMaxParticles)
Definition fsCParticleData.cpp:108
fsBool pulseGet() const
Definition fsCParticleData.h:83
fsS32 maxParticlesGet() const
Definition fsCParticleData.h:89
virtual ~fsCParticleData()
Definition fsCParticleData.cpp:313
fsS32 preRunPhaseTimeGet() const
Definition fsCParticleData.h:84
fsCParticleData(const fsCParticleData &)=delete
fsS32 emitterLifetimeGet() const
Definition fsCParticleData.h:86
fsCParticleData()
Definition fsCParticleData.cpp:284
fsS32 collectableCountGet() const
Definition fsCParticleData.h:93
friend class fsCParticleDataLoader
Definition fsCParticleData.h:35
fsStr const & collectablTypeGet() const
Definition fsCParticleData.h:92
fsS32 particlesEmit(const fsSParticleEmmitParams &pEmmitParams) const
Definition fsCParticleData.cpp:136
fsS32 lifetimeGet() const
Definition fsCParticleData.h:88
fsBool linkedToEmitterGet() const
Definition fsCParticleData.h:94
Definition fsCParticleDataInstance.h:26
Definition fsCParticleRotateParameter.h:19
Definition fsCParticleScaleParameter.h:19
Definition fsCResourceName.h:32
Definition fsIAnimationData.h:18
Definition fsIParticleCloud.h:23
Definition fsIParticle.h:39
Definition fsSColour.h:20
Definition fsStr.h:23
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
float fsF32
Definition fsBaseTypes.h:28
fsF32 mTimeOffset
Definition fsCParticleData.h:53
void dataAdd(fsS32 pDuration, fsF32 pOffset)
Definition fsCParticleData.cpp:31
fsF32 mTimeRange
Definition fsCParticleData.h:51
fsSOscillationGraph()
Definition fsCParticleData.cpp:65
fsF32 mOscillationRange
Definition fsCParticleData.h:50
std::shared_ptr< fsCGraph< fsF32 > > mGraph
Definition fsCParticleData.h:49
fsF32 mOscillationOffset
Definition fsCParticleData.h:52
void offsetSet()
Definition fsCParticleData.cpp:36
fsF32 valueGet(fsS32 pTime)
Definition fsCParticleData.cpp:26
fsS32 periodGet() const
Definition fsCParticleData.cpp:21
void rangeSet(fsF32 pOscillationRange, fsF32 pTimeRange)
Definition fsCParticleData.cpp:59
Definition fsCParticleData.h:57
fsCEntity *const mParentEnt
Definition fsCParticleData.h:75
std::vector< std::unique_ptr< fsIParticle > > & mParticleCache
Definition fsCParticleData.h:73
const fsPoint & mSpawnPosition
Definition fsCParticleData.h:74
fsSParticleEmmitParams(std::vector< std::unique_ptr< fsIParticle > > &pParticleCache, const fsPoint &pSpawnPosition, fsCEntity *const pParentEnt, fsS32 pNumToEmit, fsBool pPreRunPhase, fsIParticleCloud *pSpawnCloud)
Definition fsCParticleData.h:58
fsIParticleCloud * mSpawnCloud
Definition fsCParticleData.h:78
fsS32 mNumToEmit
Definition fsCParticleData.h:76
fsBool mPreRunPhase
Definition fsCParticleData.h:77
Definition fsPoint.h:17
Definition fsVec2d.h:16