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
#include "fsCSpriteParticle.h"

#include "../fsCSprite.h"


std::shared_ptr<fsCBrush> fsCSpriteParticle::brushGetDo() const
{
	return mSprite->brushGet();
}

void fsCSpriteParticle::textureWrapSet()
{
	mSprite->textureWrapSet();
}

void fsCSpriteParticle::uvApply(const fsVec2d& pUV)
{
	mSprite->uvUpdate(pUV);
}

fsBool fsCSpriteParticle::hitTestDo(const fsPoint& pLocalPos) const
{
	fsAffineMtx2d renderMtx = mRenderMtx * mLocalMtx;
	fsVec2d outPos;
	if (!renderMtx.fsVec2DInverseTransform(fsVec2d(static_cast<fsF32>(pLocalPos.x), static_cast<fsF32>(pLocalPos.y)),
	                                       &outPos))
	{
		return false;
	}

	fsPoint localPos;
	localPos.x = static_cast<fsS32>(outPos.x);

#if defined fsINVERTED_Y_AXIS
	localPos.y = static_cast<fsS32>(-outPos.y);
#else
	localPos.y = static_cast<fsS32>(outPos.y);
#endif

	return mSprite->hitTest(localPos, true);
}

void fsCSpriteParticle::colourGraphUpdate()
{
	if (mColourGraph != nullptr)
	{
		mSprite->colourSet(colourGraphValueGet(mElapsedTimeMs % mColourGraph->periodGet()));
	}
}

void fsCSpriteParticle::matrixApplyDo(const fsAffineMtx2d& pMatrix)
{
	mSprite->matrixApply(pMatrix);
}

void fsCSpriteParticle::updateDo(fsS32 pDeltaTime)
{
}

void fsCSpriteParticle::renderDo()
{
	mSprite->render();
}

fsCSpriteParticle::fsCSpriteParticle(std::shared_ptr<fsCBrush> pBrush, fsS32 pAlphaBlendMode,
                                     const fsSColour& pSingleColour, fsVec2d const& pPivot,
                                     const sCreateParmas& pParams) :
	fsIParticle(pParams),
	mSprite(new fsCSprite())<--- Class 'fsCSpriteParticle' does not have a copy constructor which is recommended since it has dynamic memory/resource management.<--- Class 'fsCSpriteParticle' does not have a operator= which is recommended since it has dynamic memory/resource management.
{
	mSprite->brushSet(pBrush);
	mSprite->alphaBlendModeSet(pAlphaBlendMode);
	mSprite->colourSet(fsSColour4B(pSingleColour));
	mSprite->pivotSet(pPivot);
	//mSprite->link(fsCAppCoreMain::instanceGet()->sceneGet());
}

fsCSpriteParticle::~fsCSpriteParticle()
{
	delete mSprite;
}