/********************************************************************
*
* File: fsCNativeSprite.h
*
* Purpose: Sprite that is added to and retained by a scene. All
* positioning / parenting is handled in the scene
*
*********************************************************************/
#ifndef fsCNativeSpritehdr
#define fsCNativeSpritehdr
#include <fsCore/fsBaseTypes.h>
#include "fsINative.h"
#include <2d/Sprite.h>
namespace ax
{
class Sprite;
}
class fsSColour;
class fsAffineMtx2d;
class fsCBrush;
struct fsPoint;
class fsCNativeSprite : public fsINative
{
friend class fsCNativeSpriteRenderData;
public:
fsBool hitTest(const fsPoint& pLocalPos, fsBool pRequireHitMap) const;
fsS32 widthGet() const;
fsS32 heightGet() const;
std::shared_ptr<fsCBrush> brushGet() const;
virtual ~fsCNativeSprite();<--- Destructor in derived class
protected:
void polygonInfoSetDo(fsIRenderData::fsSPolyInfo const& pPolyInfo) override;
void textureWrapSetDo() override;
void renderDo() override;
void matrixApplyDo(const fsAffineMtx2d& pRenderMatrix) override;
void colourSetDo(const fsSColour4B& pColour) override;
void uvSetDo(const fsRect& pOffest) override;
void vertsSetDo(std::vector<fsVec2d> const& pVerts) override;
void widthSetDo(fsS32 pWidth) override;
void heightSetDo(fsS32 pHeight) override;
void brushSetDo(std::shared_ptr<fsCBrush> pBrush) override;
void alphaBlendModeSetDo(fsS32 pAlphaBlendMode) override;
fsCNativeSprite();
private:
ax::Node* implGet() const override;
fsS32 mWidth;
fsS32 mHeight;
std::shared_ptr<fsCBrush> mBrush;
std::unique_ptr<ax::Sprite> mImpl;
ax::Mat4 mRenderMatrix;
ax::PolygonInfo mPolyInfo;
ax::TrianglesCommand::Triangles mCocosTris;
};
#endif