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
82
83
84
/********************************************************************
*
*	File:		fsISpriteRenderData.h
*
*	Purpose:	To hold the sprite data sent to the renderer.
*
*********************************************************************/

#ifndef fsISpriteRenderDatahdr
#define fsISpriteRenderDatahdr

#include <memory>
#include <vector>

#include <fsCore/fsBaseTypes.h>
#include <fsCore/fsVec2d.h>

#include "fsIVertexRenderData.h"

class fsCMaterial;
class fsCBrush;
class fsRect;

class fsISpriteRenderData : public fsIVertexRenderData
{
public:

	enum eVertIndexOrder
	{
		eINDEX_TL = 0,
		eINDEX_BL,
		eINDEX_BR,
		eINDEX_TR
	};

	// not NVI but saves speed with no double hop for massively called methods...
	virtual void vertsCopyToImpl(fsS32 pIndex, void* const pImpl) const {}
	virtual void uvsCopyToImpl(fsS32 pIndex, void* const pImpl) const {}
	virtual void colourCopyToImpl(void* const pImpl) const {}

	const fsCMaterial* materialGet() const;

	void textureWrapSet();

	void uvScroll(const fsVec2d& pOffest);
	void polyInfoSet(fsSPolyInfo const& pPolyInfo);

	void widthSet(fsS32 pWidth);
	void heightSet(fsS32 pHeight);

	void brushSet(std::shared_ptr<fsCBrush> pBrush);
	void alphaBlendModeSet(fsS32 pAlphaBlendMode);

	void uvsSetFromBrush(std::shared_ptr<fsCBrush> pBrush);

	virtual ~fsISpriteRenderData();<--- Destructor in derived class

	std::vector<fsVec2d> mUVs;

	fsVec2d mUVOffset;
	fsCMaterial* mMaterial;

protected:

	void passToEngineRendererDo(fsIRenderer* pRenderer, fsS32 pFirstMaterialIndex, fsS32 pLastMaterialInJob) override;
	void renderDo() override;

	virtual void polyInfoSetDo(fsSPolyInfo const& pPolyInfo) {}
	virtual void textureWrapSetDo() {};
	virtual void uvScrollDo(const fsRect& pOffSet) {}
	virtual void brushSetDo(std::shared_ptr<fsCBrush> pBrush) {}
	virtual void widthSetDo(fsS32 pWidth) {}
	virtual void heightSetDo(fsS32 pHeight) {}

	virtual void alphaBlendModeSetDo(fsS32 pAlphaBlendMode) {}

	fsISpriteRenderData();


private:
};


#endif