Fission FSN
Loading...
Searching...
No Matches
fsCNativeTexturedMeshRenderData.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: fsCNativeTexturedMeshRenderData.h
4*
5* Purpose: Axmol indexed textured mesh render data.
6*
7*********************************************************************/
8
9#ifndef fsCNativeTexturedMeshRenderDatahdr
10#define fsCNativeTexturedMeshRenderDatahdr
11
12#include <memory>
13#include <type_traits>
14#include <vector>
15
16#include <2d/Sprite.h>
17
19
20class fsCBrush;
22
23using fsSAxmolTexturedMeshVertex = std::remove_pointer_t<
24 decltype(ax::TrianglesCommand::Triangles{}.verts)>;
25
26
28{
30
31public:
32
34
35protected:
36
37 static fsIRenderData* create();
38
39 void passToEngineRendererDo(fsIRenderer* pRenderer, fsS32 pFirstMaterialIndex,
40 fsS32 pLastMaterialInJob) override;
41 fsBool batchableDo() const override { return false; }
42
43 void meshSetDo(const fsSPolyInfo& pMesh) override;
44 void matrixApplyDo(const fsAffineMtx2d& pRenderMatrix) override;
45 void brushSetDo(std::shared_ptr<fsCBrush> pBrush) override;
46 void colourSetDo(const fsSColour4B& pColour) override;
47 void alphaBlendModeSetDo(fsS32 pAlphaBlendMode) override;
48
50
51private:
52
53 void blendModeApply();
54 void nativeMeshUpdate();
55
56 std::shared_ptr<fsCBrush> mBrush;
57 std::unique_ptr<ax::Sprite> mImpl;
58 std::vector<fsSAxmolTexturedMeshVertex> mVertices;
59 std::vector<unsigned short> mIndices;
60 ax::TrianglesCommand::Triangles mTriangles;
61 ax::PolygonInfo mPolygonInfo;
62 ax::Mat4 mRenderMatrix;
63 fsSColour4B mTint;
64 fsS32 mAlphaBlendMode;
65};
66
67#endif
std::remove_pointer_t< decltype(ax::TrianglesCommand::Triangles{}.verts)> fsSAxmolTexturedMeshVertex
Definition fsCNativeTexturedMeshRenderData.h:23
Definition fsAffineMtx2d.h:27
Definition fsCBrush.h:26
void matrixApplyDo(const fsAffineMtx2d &pRenderMatrix) override
Definition fsCNativeTexturedMeshRenderData.cpp:48
~fsCNativeTexturedMeshRenderData() override
Definition fsCNativeTexturedMeshRenderData.cpp:180
friend class fsCRenderDataFactoryNative
Definition fsCNativeTexturedMeshRenderData.h:29
void colourSetDo(const fsSColour4B &pColour) override
Definition fsCNativeTexturedMeshRenderData.cpp:66
fsCNativeTexturedMeshRenderData()
Definition fsCNativeTexturedMeshRenderData.cpp:172
fsBool batchableDo() const override
Definition fsCNativeTexturedMeshRenderData.h:41
static fsIRenderData * create()
Definition fsCNativeTexturedMeshRenderData.cpp:27
void passToEngineRendererDo(fsIRenderer *pRenderer, fsS32 pFirstMaterialIndex, fsS32 pLastMaterialInJob) override
Definition fsCNativeTexturedMeshRenderData.cpp:32
void alphaBlendModeSetDo(fsS32 pAlphaBlendMode) override
Definition fsCNativeTexturedMeshRenderData.cpp:72
void meshSetDo(const fsSPolyInfo &pMesh) override
Definition fsCNativeTexturedMeshRenderData.cpp:43
void brushSetDo(std::shared_ptr< fsCBrush > pBrush) override
Definition fsCNativeTexturedMeshRenderData.cpp:58
Definition fsCRenderDataFactoryNative.h:18
Definition fsIRenderData.h:24
Definition fsIRenderer.h:73
fsITexturedMeshRenderData()=default
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
Definition fsSColour.h:54