/********************************************************************
*
* File: fsISpriteComponent.h
*
* Purpose: Common sprite behavior
*
*********************************************************************/
#ifndef fsISpriteComponenthdr
#define fsISpriteComponenthdr
#include <fsCore/src/fsCUniqueId.h>
#include <fsCore/fsBaseTypes.h>
#include "../components/fsIRenderableComponent.h"
struct fsSColour4B;
class fsCEntity;
class fsCBrush;
class fsISpriteComponent : public fsIRenderableComponent
{
friend class fsCComponentFactory;
public:
static const fsCUniqueId mTypeId;
fsBool obscuredByBoundingBoxCheck(fsISpriteComponent* pOtherSprComp);
void alphaBlendSet(fsS32 pBlend);
fsBool hitTest(fsISpriteComponent* pOtherSprComp, fsBool pRequireHitMap) const;
fsBool hitTest(const fsPoint& pScreenPos, fsBool pRequireHitMap) const;
fsS32 widthGet() const;
fsS32 heightGet() const;
void colourSet(const fsSColour4B& pColour);
void widthSet(fsS32 pWidth, fsBool pModifyRenderData = true);
void heightSet(fsS32 pHeight, fsBool pModifyRenderData = true);
std::shared_ptr<fsCBrush> brushGet() const;
void brushSet(std::shared_ptr<fsCBrush> pBrush);
protected:
virtual fsBool obscuredByBoundingBoxCheckDo(fsISpriteComponent* pOtherSprComp) { return false;};
virtual void alphaBlendSetDo(fsS32 pBlend) {}
virtual fsBool hitTestDo(fsISpriteComponent* pOtherSprComp, fsBool pRequireHitMap) const {return false;};
virtual fsBool hitTestDo(const fsPoint& pScreenPos, fsBool pRequireHitMap) const {return false;};
virtual fsS32 widthGetDo() const = 0;
virtual fsS32 heightGetDo() const = 0;
virtual void colourSetDo(const fsSColour4B& pColour) {};
virtual void widthSetDo(fsS32 pWidth, fsBool pModifyRenderData = true) = 0;
virtual void heightSetDo(fsS32 pHeight, fsBool pModifyRenderData = true) = 0;
virtual std::shared_ptr<fsCBrush> brushGetDo() const { return nullptr; };
virtual void brushSetDo(std::shared_ptr<fsCBrush> pBrush) {};
fsISpriteComponent(fsCEntity* pParent);
virtual ~fsISpriteComponent();<--- Destructor in derived class
private:
};
#endif