#include "fsISpriteRenderData.h"
#include "src/fsCBrush.h"
#include "src/fsCMaterial.h"
#include "fsITexture.h"
#include "fsIRenderer.h"
#include "fsCore/fsRect.h"
void fsISpriteRenderData::polyInfoSet(fsSPolyInfo const& pPolyInfo)
{
polyInfoSetDo(pPolyInfo);
}
void fsISpriteRenderData::passToEngineRendererDo(fsIRenderer* const pRenderer, fsS32 pFirstMaterialIndex,
fsS32 pLastMaterialInJob)
{
pRenderer->spriteBatchRender(pFirstMaterialIndex, pLastMaterialInJob);
};
void fsISpriteRenderData::renderDo()
{
fsIRenderer::instanceGet()->spriteAddToBatch(this);
};
const fsCMaterial* fsISpriteRenderData::materialGet() const
{
return mMaterial;
}
void fsISpriteRenderData::widthSet(fsS32 pWidth)
{
widthSetDo(pWidth);
}
void fsISpriteRenderData::heightSet(fsS32 pHeight)
{
heightSetDo(pHeight);
}
void fsISpriteRenderData::textureWrapSet()
{
textureWrapSetDo();
}
void fsISpriteRenderData::uvScroll(const fsVec2d& pOffest)
{
const fsF32 fullTexW = static_cast<fsF32>(mMaterial->texturePtrGet()->textureWidthGet());
const fsF32 fullTexH = static_cast<fsF32>(mMaterial->texturePtrGet()->textureHeightGet());
mUVOffset = pOffest;
uvScrollDo(fsRect(
(mUVs[eINDEX_TL].x + pOffest.x) * fullTexW,
(mUVs[eINDEX_TR].x + pOffest.x) * fullTexW,
(mUVs[eINDEX_TL].y + pOffest.y) * fullTexH,
(mUVs[eINDEX_BL].y + pOffest.y) * fullTexH
));
}
void fsISpriteRenderData::brushSet(std::shared_ptr<fsCBrush> pBrush)
{
mMaterial->propertiesSet(pBrush);
uvsSetFromBrush(pBrush);
brushSetDo(pBrush);
}
void fsISpriteRenderData::alphaBlendModeSet(fsS32 pAlphaBlendMode)
{
mMaterial->alphaBlendSet(pAlphaBlendMode);
alphaBlendModeSetDo(pAlphaBlendMode);
}
void fsISpriteRenderData::uvsSetFromBrush(std::shared_ptr<fsCBrush> pBrush)
{
const fsF32 fullTexW = static_cast<fsF32>(pBrush->textureGet()->textureWidthGet());
const fsF32 fullTexH = static_cast<fsF32>(pBrush->textureGet()->textureHeightGet());
const fsF32 l = static_cast<fsF32>(pBrush->offsetGet().x) / fullTexW;
const fsF32 r = static_cast<fsF32>(pBrush->offsetGet().x + pBrush->dimensionsGet().x) / fullTexW;
const fsF32 t = static_cast<fsF32>(pBrush->offsetGet().y) / fullTexH;
const fsF32 b = static_cast<fsF32>(pBrush->offsetGet().y + pBrush->dimensionsGet().y) / fullTexH;
mUVs[eINDEX_TL].x = mUVs[eINDEX_BL].x = l;
mUVs[eINDEX_BR].x = mUVs[eINDEX_TR].x = r;
mUVs[eINDEX_TL].y = mUVs[eINDEX_TR].y = t;
mUVs[eINDEX_BL].y = mUVs[eINDEX_BR].y = b;
}
fsISpriteRenderData::fsISpriteRenderData():
mUVs(4),
mMaterial(new fsCMaterial())<--- Class 'fsISpriteRenderData' does not have a copy constructor which is recommended since it has dynamic memory/resource management.<--- Class 'fsISpriteRenderData' does not have a operator= which is recommended since it has dynamic memory/resource management.
{
}
fsISpriteRenderData::~fsISpriteRenderData()
{
delete mMaterial;
}