Fission FSN
Loading...
Searching...
No Matches
fsCNativeSprite.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: fsCNativeSprite.h
4*
5* Purpose: Sprite that is added to and retained by a scene. All
6* positioning / parenting is handled in the scene
7*
8*********************************************************************/
9
10#ifndef fsCNativeSpritehdr
11#define fsCNativeSpritehdr
12
13#include <Magnum/Math/Matrix4.h>
14#include <Magnum/GL/GL.h>
15#include <Magnum/GL/Mesh.h>
16#include <Magnum/Shaders/FlatGL.h>
17
18#include <fsCore/fsBaseTypes.h>
20
21#include "fsINative.h"
22
23class fsSColour;
24class fsAffineMtx2d;
25class fsCBrush;
26struct fsPoint;
27
28
29class fsCNativeSprite : public fsINative
30{
31 friend class fsCNativeSpriteRenderData;
32
33public:
34
35 static Magnum::Shaders::FlatGL3D *mShader;
36 static Magnum::Matrix4 projectionMatrix;
37
38 fsBool hitTest(const fsPoint& pLocalPos, fsBool pRequireHitMap) const;
39
40 fsS32 widthGet() const;
42
43 std::shared_ptr<fsCBrush> brushGet() const;
44
46
47protected:
48
49 void polygonInfoSetDo(fsIRenderData::fsSPolyInfo const& pPolyInfo) override;
50
51 void textureWrapSetDo() override;
52 void renderDo() override;
53 void matrixApplyDo(const fsAffineMtx2d& pRenderMatrix) override;
54 void colourSetDo(const fsSColour4B& pColour) override;
55
56 void uvSetDo(const fsRect& pOffest) override;
57 void vertsSetDo(std::vector<fsVec2d> const& pVerts) override;
58 void widthSetDo(fsS32 pWidth) override;
59 void heightSetDo(fsS32 pHeight) override;
60 void brushSetDo(std::shared_ptr<fsCBrush> pBrush) override;
61 void alphaBlendModeSetDo(fsS32 pAlphaBlendMode) override;
62
64
65private:
66
67 fsS32 mWidth;
68 fsS32 mHeight;
69
70 fsS32 mScreenWidth;
71 fsS32 mScreenHeight;
72
73 struct TriangleVertex {
74 Magnum::Vector2 position;
75 Magnum::Vector2 textureCoordinates;
76 };
77
78 std::shared_ptr<fsCBrush> mBrush;
79
80 Magnum::Math::Matrix4<fsF32> mRenderMatrix;
81 Magnum::GL::Texture2D* mTexture;
82 Magnum::GL::Mesh mMesh;
83
84};
85
86
87#endif
Definition fsAffineMtx2d.h:27
Definition fsCBrush.h:26
Definition fsCNativeSprite.h:31
fsS32 widthGet() const
friend class fsCNativeSpriteRenderData
Definition fsCNativeSprite.h:32
void vertsSetDo(std::vector< fsVec2d > const &pVerts) override
std::shared_ptr< fsCBrush > brushGet() const
static Magnum::Shaders::FlatGL3D * mShader
Definition fsCNativeSprite.h:35
void alphaBlendModeSetDo(fsS32 pAlphaBlendMode) override
void heightSetDo(fsS32 pHeight) override
void textureWrapSetDo() override
fsS32 heightGet() const
void colourSetDo(const fsSColour4B &pColour) override
void widthSetDo(fsS32 pWidth) override
void uvSetDo(const fsRect &pOffest) override
void polygonInfoSetDo(fsIRenderData::fsSPolyInfo const &pPolyInfo) override
void renderDo() override
void brushSetDo(std::shared_ptr< fsCBrush > pBrush) override
void matrixApplyDo(const fsAffineMtx2d &pRenderMatrix) override
static Magnum::Matrix4 projectionMatrix
Definition fsCNativeSprite.h:36
fsBool hitTest(const fsPoint &pLocalPos, fsBool pRequireHitMap) const
virtual ~fsCNativeSprite()
Definition fsINative.h:31
fsF32 mRenderMatrix[16]
Definition fsINative.h:68
Definition fsRect.h:16
Definition fsSColour.h:20
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
Definition fsIRenderData.h:44
Definition fsPoint.h:17
Definition fsSColour.h:54