Fission FSN
Loading...
Searching...
No Matches
fsCParticleEmitter.h
Go to the documentation of this file.
1/********************************************************************
2*
3* Created: 20/3/2014 11:09
4*
5* File: fsCParticleEmitter.h
6*
7* Author: Mick Waites
8*
9* Purpose: Emits, updates and renders particles.
10*
11*********************************************************************/
12
13#ifndef fsCParticleEmitterhdr
14#define fsCParticleEmitterhdr
15
16#include <vector>
17#include <functional>
18#include <memory>
19
20#include <fsCore/fsPoint.h>
21#include <fsCore/fsRect.h>
22#include <fsCore/fsStr.h>
23
24#include "../../fsIRenderable.h"
26
27class fsCParticleData;
28class fsIParticle;
29class fsCResourceName;
30class fsCEntity;
31class fsIScene;
32class fsCSprite;
33class fsINative;
35class fsAffineMtx2d;
37
38
40{
41public:
42
43 const fsStr& collectableTypeGet() const;
44
45 void particleCloudRegister(fsIParticleCloud* pSpawnCloud);
46
48 fsBool collectableGet() const;
49 fsS32 photoScoreGet(const fsRect& pScreenRect) const;
50 fsBool hitTestAndCollect(const fsPoint& pPointerPos, std::function<void(fsIParticle* pParticle)> pCallBack);
51 fsBool hitTest(const fsPoint& pPointerPos);
52
53 void shortCircuit();
54
55 fsBool preRunable() const;
56 void preRun();
57
59
60 fsBool runsForeverGet() const;
61
62 void spawnPositionUpdate(const fsPoint& pPos);
63 void update(fsS32 pDeltaMs);
64
66
67 fsBool isActiveGet() const;
69
70 void initialise();
72 virtual ~fsCParticleEmitter();
73
74protected:
75
76 void matrixApplyDo(const fsAffineMtx2d& pRenderMatrix) override;
77 void renderDo() override;
78
79private:
80
81 void particlesUpdate(fsS32 pTimeDelta);
82 void emptySlotsFill(fsS32 pTimeDelta);
83
84
85 fsBool mStarted;
86
87 fsF32 mParticleToEmitNow;
88 fsS32 mElapsedTimeMs;
89 fsS32 mNumLiveParticles;
90
91 fsS32 mCollectableParticleCount;
92 fsPoint mSpawnPosition;
93
94 fsCEntity* mParent;
95
96 fsIParticle* mHitTestParticle;
97 fsCParticleDataInstance mParticleData;
98
99 std::vector<std::unique_ptr<fsIParticle>> mParticles;
100};
101
102#endif
Definition fsAffineMtx2d.h:27
Definition fsCEntity.h:39
Definition fsCParticleCloud.h:24
Definition fsCParticleData.h:34
Definition fsCParticleDataInstance.h:26
void matrixApplyDo(const fsAffineMtx2d &pRenderMatrix) override
Definition fsCParticleEmitter.cpp:186
fsS32 photoScoreGet(const fsRect &pScreenRect) const
Definition fsCParticleEmitter.cpp:35
void spawnPositionUpdate(const fsPoint &pPos)
Definition fsCParticleEmitter.cpp:163
fsBool collectableGet() const
Definition fsCParticleEmitter.cpp:30
void particleCloudRegister(fsIParticleCloud *pSpawnCloud)
Definition fsCParticleEmitter.cpp:15
virtual ~fsCParticleEmitter()
Definition fsCParticleEmitter.cpp:336
void initialise()
Definition fsCParticleEmitter.cpp:298
void shortCircuit()
Definition fsCParticleEmitter.cpp:168
fsBool particlesLinkToEmitterGet() const
Definition fsCParticleEmitter.cpp:278
fsBool isActiveGet() const
Definition fsCParticleEmitter.cpp:283
void preRun()
Definition fsCParticleEmitter.cpp:309
fsBool preRunable() const
Definition fsCParticleEmitter.cpp:158
fsCParticleEmitter(fsCParticleDataInstance pParticleData)
Definition fsCParticleEmitter.cpp:323
fsS32 remainingParticleCountGet() const
Definition fsCParticleEmitter.cpp:25
fsS32 numLiveParticlesGet() const
Definition fsCParticleEmitter.cpp:293
fsBool hitTest(const fsPoint &pPointerPos)
Definition fsCParticleEmitter.cpp:141
fsBool hitTestAndCollect(const fsPoint &pPointerPos, std::function< void(fsIParticle *pParticle)> pCallBack)
Definition fsCParticleEmitter.cpp:120
const fsStr & collectableTypeGet() const
Definition fsCParticleEmitter.cpp:20
fsBool runsForeverGet() const
Definition fsCParticleEmitter.cpp:181
void renderDo() override
Definition fsCParticleEmitter.cpp:270
void update(fsS32 pDeltaMs)
Definition fsCParticleEmitter.cpp:194
void particleEmitterParentEntSet(fsCEntity *pParent)
Definition fsCParticleEmitter.cpp:176
Definition fsCResourceName.h:32
Definition fsCSprite.h:24
Definition fsINative.h:31
Definition fsIParticleCloud.h:23
Definition fsIParticle.h:39
Definition fsIRenderableComponent.h:21
fsIRenderable()=default
Definition fsIScene.h:18
Definition fsRect.h:16
Definition fsStr.h:23
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
float fsF32
Definition fsBaseTypes.h:28
Definition fsPoint.h:17