#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;
}