DDNet documentation
Loading...
Searching...
No Matches
render_layer.h
Go to the documentation of this file.
1#ifndef GAME_MAP_RENDER_LAYER_H
2#define GAME_MAP_RENDER_LAYER_H
3
4#include <cstdint>
5
6using offset_ptr_size = char *;
7using offset_ptr = uintptr_t;
8using offset_ptr32 = unsigned int;
9
10#include <base/color.h>
11
12#include <engine/graphics.h>
13
16#include <game/map/render_map.h>
17#include <game/mapitems.h>
18#include <game/mapitems_ex.h>
19
20#include <memory>
21#include <optional>
22#include <vector>
23
24class CMapLayers;
27class IMap;
28class CMapImages;
29
30typedef std::function<void(int GroupId, int LayerId)> FCallbackLayerInit;
31
32constexpr int BorderRenderDistance = 201;
33
35{
36public:
37 CClipRegion() = default;
38 CClipRegion(float X, float Y, float Width, float Height) :
39 m_X(X), m_Y(Y), m_Width(Width), m_Height(Height) {}
40
41 float m_X;
42 float m_Y;
43 float m_Width;
44 float m_Height;
45};
46
62
64{
65public:
66 CRenderLayer(int GroupId, int LayerId, int Flags);
67 virtual void OnInit(IGraphics *pGraphics, ITextRender *pTextRender, CRenderMap *pRenderMap, std::shared_ptr<CEnvelopeManager> &pEnvelopeManager, IMap *pMap, IMapImages *pMapImages, std::optional<FCallbackLayerInit> &CallbackLayerInitOptional, bool TileAndQuadBuffering);
68
69 virtual void Init() = 0;
70 virtual void Render(const CRenderLayerParams &Params) = 0;
71 virtual bool DoRender(const CRenderLayerParams &Params) = 0;
72 virtual bool IsValid() const { return true; }
73 virtual bool IsGroup() const { return false; }
74 virtual void Unload() = 0;
75
76 bool IsVisibleInClipRegion(const std::optional<CClipRegion> &ClipRegion) const;
77 int GetGroup() const { return m_GroupId; }
78
79protected:
83
84 void UseTexture(IGraphics::CTextureHandle TextureHandle);
86 virtual void InitCallback() const;
87
89 class IMap *m_pMap = nullptr;
91 std::shared_ptr<CEnvelopeManager> m_pEnvelopeManager;
92 std::optional<FCallbackLayerInit> m_InitCallback;
93 std::optional<CClipRegion> m_LayerClip;
94};
95
97{
98public:
99 CRenderLayerGroup(int GroupId, CMapItemGroup *pGroup);
100 ~CRenderLayerGroup() override = default;
101 void Init() override;
102 void Render(const CRenderLayerParams &Params) override;
103 bool DoRender(const CRenderLayerParams &Params) override;
104 bool IsValid() const override { return m_pGroup != nullptr; }
105 bool IsGroup() const override { return true; }
106 void Unload() override {}
107 void InitCallback() const override;
108
109protected:
111 {
113 }
114
116};
117
119{
120public:
121 CRenderLayerTile(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap);
122 ~CRenderLayerTile() override = default;
123 void Render(const CRenderLayerParams &Params) override;
124 bool DoRender(const CRenderLayerParams &Params) override;
125 void Init() override;
126 void OnInit(IGraphics *pGraphics, ITextRender *pTextRender, CRenderMap *pRenderMap, std::shared_ptr<CEnvelopeManager> &pEnvelopeManager, IMap *pMap, IMapImages *pMapImages, std::optional<FCallbackLayerInit> &CallbackLayerInitOptional, bool TileAndQuadBuffering) override;
127
128 virtual int GetDataIndex() const;
129 bool IsValid() const override;
130 void Unload() override;
131
132protected:
133 virtual void *GetRawData() const;
134 template<class T>
135 T *GetData() const;
136
137 virtual ColorRGBA GetRenderColor(const CRenderLayerParams &Params) const;
138 virtual void InitTileData();
139 virtual void GetTileData(unsigned char *pIndex, unsigned char *pFlags, int *pAngleRotate, unsigned int x, unsigned int y, int CurOverlay) const;
141 virtual bool IsDesignLayer() const { return true; }
143
144private:
146
147protected:
149 {
150 public:
152 {
153 m_Width = 0;
154 m_Height = 0;
156 m_IsTextured = false;
157 }
158
159 bool Init(unsigned int Width, unsigned int Height);
160 void Unload();
161
163 {
164 public:
167
168 private:
170
171 public:
172 bool DoDraw() const
173 {
174 return (m_IndexBufferByteOffset & 0x10000000) != 0;
175 }
176
177 void Draw(bool SetDraw)
178 {
179 m_IndexBufferByteOffset = (SetDraw ? 0x10000000 : (offset_ptr32)0) | (m_IndexBufferByteOffset & 0xEFFFFFFF);
180 }
181
183 {
184 return ((offset_ptr)(m_IndexBufferByteOffset & 0xEFFFFFFF) * 6 * sizeof(uint32_t));
185 }
186
187 void SetIndexBufferByteOffset(offset_ptr32 IndexBufferByteOff)
188 {
189 m_IndexBufferByteOffset = IndexBufferByteOff | (m_IndexBufferByteOffset & 0x10000000);
190 }
191
192 void AddIndexBufferByteOffset(offset_ptr32 IndexBufferByteOff)
193 {
194 m_IndexBufferByteOffset = ((m_IndexBufferByteOffset & 0xEFFFFFFF) + IndexBufferByteOff) | (m_IndexBufferByteOffset & 0x10000000);
195 }
196 };
197
198 std::vector<CTileVisual> m_vTilesOfLayer;
199
204
205 CTileVisual m_BorderKillTile; // end of map kill tile -- game layer only
206
207 std::vector<CTileVisual> m_vBorderTop;
208 std::vector<CTileVisual> m_vBorderLeft;
209 std::vector<CTileVisual> m_vBorderRight;
210 std::vector<CTileVisual> m_vBorderBottom;
211
212 unsigned int m_Width;
213 unsigned int m_Height;
216 };
217
218 void UploadTileData(std::optional<CTileLayerVisuals> &VisualsOptional, int CurOverlay, bool AddAsSpeedup, bool IsGameLayer = false);
219
220 virtual void RenderTileLayerWithTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params);
221 virtual void RenderTileLayerNoTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params);
222
223 void RenderTileLayer(const ColorRGBA &Color, const CRenderLayerParams &Params, CTileLayerVisuals *pTileLayerVisuals = nullptr);
224 void RenderTileBorder(const ColorRGBA &Color, int BorderX0, int BorderY0, int BorderX1, int BorderY1, CTileLayerVisuals *pTileLayerVisuals);
225 void RenderKillTileBorder(const ColorRGBA &Color);
226
227 std::optional<CRenderLayerTile::CTileLayerVisuals> m_VisualTiles;
230};
231
233{
234public:
235 CRenderLayerQuads(int GroupId, int LayerId, int Flags, CMapItemLayerQuads *pLayerQuads);
236 void OnInit(IGraphics *pGraphics, ITextRender *pTextRender, CRenderMap *pRenderMap, std::shared_ptr<CEnvelopeManager> &pEnvelopeManager, IMap *pMap, IMapImages *pMapImages, std::optional<FCallbackLayerInit> &CallbackLayerInitOptional, bool TileAndQuadBuffering) override;
237 void Init() override;
238 bool IsValid() const override { return m_pLayerQuads->m_NumQuads > 0 && m_pQuads; }
239 void Render(const CRenderLayerParams &Params) override;
240 bool DoRender(const CRenderLayerParams &Params) override;
241 void Unload() override;
242
243protected:
245
247 {
248 public:
251 void Unload();
252
256 };
257 void RenderQuadLayer(float Alpha, const CRenderLayerParams &Params);
258
259 std::optional<CRenderLayerQuads::CQuadLayerVisuals> m_VisualQuad;
261
263 {
264 public:
268
273
274 std::vector<SQuadRenderInfo> m_vQuadRenderInfo;
275 std::optional<CClipRegion> m_ClipRegion;
276 };
277 void CalculateClipping(CQuadCluster &QuadCluster);
278 bool CalculateQuadClipping(const CQuadCluster &QuadCluster, float aQuadOffsetMin[2], float aQuadOffsetMax[2]) const;
279
280 std::vector<CQuadCluster> m_vQuadClusters;
282
283private:
285};
286
288{
289public:
290 CRenderLayerEntityBase(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap);
291 ~CRenderLayerEntityBase() override = default;
292 bool DoRender(const CRenderLayerParams &Params) override;
293
294protected:
295 ColorRGBA GetRenderColor(const CRenderLayerParams &Params) const override { return ColorRGBA(1.0f, 1.0f, 1.0f, Params.m_EntityOverlayVal / 100.0f); }
296 IGraphics::CTextureHandle GetTexture() const override;
297 bool IsDesignLayer() const override { return false; }
298};
299
301{
302public:
303 CRenderLayerEntityGame(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap);
304 void Init() override;
305
306protected:
307 void RenderTileLayerWithTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override;
308 void RenderTileLayerNoTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override;
309
310private:
312};
313
315{
316public:
317 CRenderLayerEntityFront(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap);
318 int GetDataIndex() const override;
319 void Init() override;
320
321protected:
322 void RenderTileLayerNoTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override;
323};
324
326{
327public:
328 CRenderLayerEntityTele(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap);
329 int GetDataIndex() const override;
330 void Init() override;
331 void InitTileData() override;
332 void Unload() override;
333
334protected:
335 void RenderTileLayerWithTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override;
336 void RenderTileLayerNoTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override;
337 void GetTileData(unsigned char *pIndex, unsigned char *pFlags, int *pAngleRotate, unsigned int x, unsigned int y, int CurOverlay) const override;
338
339private:
340 std::optional<CRenderLayerTile::CTileLayerVisuals> m_VisualTeleNumbers;
342};
343
345{
346public:
347 CRenderLayerEntitySpeedup(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap);
348 int GetDataIndex() const override;
349 void Init() override;
350 void InitTileData() override;
351 void Unload() override;
352
353protected:
354 void RenderTileLayerWithTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override;
355 void RenderTileLayerNoTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override;
356 void GetTileData(unsigned char *pIndex, unsigned char *pFlags, int *pAngleRotate, unsigned int x, unsigned int y, int CurOverlay) const override;
357 IGraphics::CTextureHandle GetTexture() const override;
358
359private:
360 std::optional<CRenderLayerTile::CTileLayerVisuals> m_VisualForce;
361 std::optional<CRenderLayerTile::CTileLayerVisuals> m_VisualMaxSpeed;
363};
364
366{
367public:
368 CRenderLayerEntitySwitch(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap);
369 int GetDataIndex() const override;
370 void Init() override;
371 void InitTileData() override;
372 void Unload() override;
373
374protected:
375 void RenderTileLayerWithTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override;
376 void RenderTileLayerNoTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override;
377 void GetTileData(unsigned char *pIndex, unsigned char *pFlags, int *pAngleRotate, unsigned int x, unsigned int y, int CurOverlay) const override;
378 IGraphics::CTextureHandle GetTexture() const override;
379
380private:
381 std::optional<CRenderLayerTile::CTileLayerVisuals> m_VisualSwitchNumberTop;
382 std::optional<CRenderLayerTile::CTileLayerVisuals> m_VisualSwitchNumberBottom;
384};
385
387{
388public:
389 CRenderLayerEntityTune(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap);
390 int GetDataIndex() const override;
391 void Init() override;
392 void InitTileData() override;
393
394protected:
395 void RenderTileLayerNoTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override;
396 void GetTileData(unsigned char *pIndex, unsigned char *pFlags, int *pAngleRotate, unsigned int x, unsigned int y, int CurOverlay) const override;
397 IGraphics::CTextureHandle GetTexture() const override;
398
399private:
402};
403#endif
CClipRegion()=default
float m_Width
Definition render_layer.h:43
CClipRegion(float X, float Y, float Width, float Height)
Definition render_layer.h:38
float m_Height
Definition render_layer.h:44
float m_X
Definition render_layer.h:41
float m_Y
Definition render_layer.h:42
Definition mapimages.h:37
Definition mapitems.h:408
Definition mapitems.h:485
int m_NumQuads
Definition mapitems.h:490
Definition mapitems.h:468
Definition maplayers.h:16
Definition mapitems.h:337
Definition render_component.h:10
~CRenderLayerEntityBase() override=default
bool IsDesignLayer() const override
Definition render_layer.h:297
ColorRGBA GetRenderColor(const CRenderLayerParams &Params) const override
Definition render_layer.h:295
IGraphics::CTextureHandle GetTexture() const override
Definition render_layer.cpp:1506
bool DoRender(const CRenderLayerParams &Params) override
Definition render_layer.cpp:1493
CRenderLayerEntityBase(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap)
Definition render_layer.cpp:1490
void RenderTileLayerNoTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override
Definition render_layer.cpp:1564
void Init() override
Definition render_layer.cpp:1558
CRenderLayerEntityFront(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap)
Definition render_layer.cpp:1550
int GetDataIndex() const override
Definition render_layer.cpp:1553
ColorRGBA GetDeathBorderColor() const
Definition render_layer.cpp:1540
CRenderLayerEntityGame(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap)
Definition render_layer.cpp:1512
void RenderTileLayerWithTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override
Definition render_layer.cpp:1521
void Init() override
Definition render_layer.cpp:1515
void RenderTileLayerNoTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override
Definition render_layer.cpp:1528
CSpeedupTile * m_pSpeedupTiles
Definition render_layer.h:362
void RenderTileLayerNoTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override
Definition render_layer.cpp:1710
void GetTileData(unsigned char *pIndex, unsigned char *pFlags, int *pAngleRotate, unsigned int x, unsigned int y, int CurOverlay) const override
Definition render_layer.cpp:1672
void Unload() override
Definition render_layer.cpp:1657
void InitTileData() override
Definition render_layer.cpp:1652
std::optional< CRenderLayerTile::CTileLayerVisuals > m_VisualForce
Definition render_layer.h:360
CRenderLayerEntitySpeedup(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap)
Definition render_layer.cpp:1631
void Init() override
Definition render_layer.cpp:1644
int GetDataIndex() const override
Definition render_layer.cpp:1639
void RenderTileLayerWithTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override
Definition render_layer.cpp:1687
IGraphics::CTextureHandle GetTexture() const override
Definition render_layer.cpp:1634
std::optional< CRenderLayerTile::CTileLayerVisuals > m_VisualMaxSpeed
Definition render_layer.h:361
void GetTileData(unsigned char *pIndex, unsigned char *pFlags, int *pAngleRotate, unsigned int x, unsigned int y, int CurOverlay) const override
Definition render_layer.cpp:1758
void RenderTileLayerWithTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override
Definition render_layer.cpp:1778
std::optional< CRenderLayerTile::CTileLayerVisuals > m_VisualSwitchNumberBottom
Definition render_layer.h:382
void RenderTileLayerNoTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override
Definition render_layer.cpp:1796
void Unload() override
Definition render_layer.cpp:1743
CRenderLayerEntitySwitch(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap)
Definition render_layer.cpp:1717
void InitTileData() override
Definition render_layer.cpp:1738
std::optional< CRenderLayerTile::CTileLayerVisuals > m_VisualSwitchNumberTop
Definition render_layer.h:381
int GetDataIndex() const override
Definition render_layer.cpp:1725
CSwitchTile * m_pSwitchTiles
Definition render_layer.h:383
IGraphics::CTextureHandle GetTexture() const override
Definition render_layer.cpp:1720
void Init() override
Definition render_layer.cpp:1730
int GetDataIndex() const override
Definition render_layer.cpp:1573
CTeleTile * m_pTeleTiles
Definition render_layer.h:341
void Init() override
Definition render_layer.cpp:1578
void GetTileData(unsigned char *pIndex, unsigned char *pFlags, int *pAngleRotate, unsigned int x, unsigned int y, int CurOverlay) const override
Definition render_layer.cpp:1617
void InitTileData() override
Definition render_layer.cpp:1585
std::optional< CRenderLayerTile::CTileLayerVisuals > m_VisualTeleNumbers
Definition render_layer.h:340
void Unload() override
Definition render_layer.cpp:1590
CRenderLayerEntityTele(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap)
Definition render_layer.cpp:1570
void RenderTileLayerWithTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override
Definition render_layer.cpp:1600
void RenderTileLayerNoTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override
Definition render_layer.cpp:1610
int GetDataIndex() const override
Definition render_layer.cpp:1833
void GetTileData(unsigned char *pIndex, unsigned char *pFlags, int *pAngleRotate, unsigned int x, unsigned int y, int CurOverlay) const override
Definition render_layer.cpp:1812
CRenderLayerEntityTune(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap)
Definition render_layer.cpp:1804
void RenderTileLayerNoTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params) override
Definition render_layer.cpp:1843
IGraphics::CTextureHandle GetTexture() const override
Definition render_layer.cpp:1807
void Init() override
Definition render_layer.cpp:1827
void InitTileData() override
Definition render_layer.cpp:1838
CTuneTile * m_pTuneTiles
Definition render_layer.h:400
CTuneColorMapper m_TuneColorMapper
Definition render_layer.h:401
CRenderLayerGroup(int GroupId, CMapItemGroup *pGroup)
Definition render_layer.cpp:227
bool IsGroup() const override
Definition render_layer.h:105
void InitCallback() const override
Definition render_layer.cpp:272
bool IsValid() const override
Definition render_layer.h:104
~CRenderLayerGroup() override=default
void Unload() override
Definition render_layer.h:106
bool DoRender(const CRenderLayerParams &Params) override
Definition render_layer.cpp:230
IGraphics::CTextureHandle GetTexture() const override
Definition render_layer.h:110
void Render(const CRenderLayerParams &Params) override
Definition render_layer.cpp:286
void Init() override
Definition render_layer.cpp:281
CMapItemGroup * m_pGroup
Definition render_layer.h:115
Definition render_layer.h:48
float m_Zoom
Definition render_layer.h:53
bool m_DebugRenderTileClips
Definition render_layer.h:60
vec2 m_Center
Definition render_layer.h:52
bool m_DebugRenderClusterClips
Definition render_layer.h:59
int m_EntityOverlayVal
Definition render_layer.h:51
bool m_RenderTileBorder
Definition render_layer.h:56
bool m_DebugRenderQuadClips
Definition render_layer.h:58
bool m_DebugRenderGroupClips
Definition render_layer.h:57
bool m_RenderInvalidTiles
Definition render_layer.h:55
int m_RenderType
Definition render_layer.h:50
bool m_RenderText
Definition render_layer.h:54
Definition render_layer.h:263
std::vector< SQuadRenderInfo > m_vQuadRenderInfo
Definition render_layer.h:274
int m_ColorEnv
Definition render_layer.h:271
float m_PosEnvOffset
Definition render_layer.h:270
bool m_Grouped
Definition render_layer.h:265
float m_ColorEnvOffset
Definition render_layer.h:272
int m_PosEnv
Definition render_layer.h:269
std::optional< CClipRegion > m_ClipRegion
Definition render_layer.h:275
int m_StartIndex
Definition render_layer.h:266
int m_NumQuads
Definition render_layer.h:267
int m_QuadNum
Definition render_layer.h:253
CQuadLayerVisuals()
Definition render_layer.h:249
bool m_IsTextured
Definition render_layer.h:255
int m_BufferContainerIndex
Definition render_layer.h:254
void CalculateClipping(CQuadCluster &QuadCluster)
Definition render_layer.cpp:1406
CQuad * m_pQuads
Definition render_layer.h:281
std::optional< CRenderLayerQuads::CQuadLayerVisuals > m_VisualQuad
Definition render_layer.h:259
IGraphics::CTextureHandle GetTexture() const override
Definition render_layer.h:244
bool DoRender(const CRenderLayerParams &Params) override
Definition render_layer.cpp:1466
CRenderLayerQuads(int GroupId, int LayerId, int Flags, CMapItemLayerQuads *pLayerQuads)
Definition render_layer.cpp:1012
std::vector< CQuadCluster > m_vQuadClusters
Definition render_layer.h:280
void Init() override
Definition render_layer.cpp:1112
void OnInit(IGraphics *pGraphics, ITextRender *pTextRender, CRenderMap *pRenderMap, std::shared_ptr< CEnvelopeManager > &pEnvelopeManager, IMap *pMap, IMapImages *pMapImages, std::optional< FCallbackLayerInit > &CallbackLayerInitOptional, bool TileAndQuadBuffering) override
Definition render_layer.cpp:1104
IGraphics::CTextureHandle m_TextureHandle
Definition render_layer.h:284
void Render(const CRenderLayerParams &Params) override
Definition render_layer.cpp:1443
CMapItemLayerQuads * m_pLayerQuads
Definition render_layer.h:260
bool CalculateQuadClipping(const CQuadCluster &QuadCluster, float aQuadOffsetMin[2], float aQuadOffsetMax[2]) const
Definition render_layer.cpp:1318
bool IsValid() const override
Definition render_layer.h:238
void RenderQuadLayer(float Alpha, const CRenderLayerParams &Params)
Definition render_layer.cpp:1019
void Unload() override
Definition render_layer.cpp:1304
offset_ptr IndexBufferByteOffset() const
Definition render_layer.h:182
void Draw(bool SetDraw)
Definition render_layer.h:177
CTileVisual()
Definition render_layer.h:165
void SetIndexBufferByteOffset(offset_ptr32 IndexBufferByteOff)
Definition render_layer.h:187
offset_ptr32 m_IndexBufferByteOffset
Definition render_layer.h:169
bool DoDraw() const
Definition render_layer.h:172
void AddIndexBufferByteOffset(offset_ptr32 IndexBufferByteOff)
Definition render_layer.h:192
Definition render_layer.h:149
bool m_IsTextured
Definition render_layer.h:215
std::vector< CTileVisual > m_vTilesOfLayer
Definition render_layer.h:198
std::vector< CTileVisual > m_vBorderLeft
Definition render_layer.h:208
int m_BufferContainerIndex
Definition render_layer.h:214
std::vector< CTileVisual > m_vBorderRight
Definition render_layer.h:209
CTileLayerVisuals()
Definition render_layer.h:151
std::vector< CTileVisual > m_vBorderBottom
Definition render_layer.h:210
CTileVisual m_BorderTopRight
Definition render_layer.h:201
CTileVisual m_BorderTopLeft
Definition render_layer.h:200
unsigned int m_Width
Definition render_layer.h:212
std::vector< CTileVisual > m_vBorderTop
Definition render_layer.h:207
CTileVisual m_BorderBottomRight
Definition render_layer.h:202
unsigned int m_Height
Definition render_layer.h:213
CTileVisual m_BorderKillTile
Definition render_layer.h:205
CTileVisual m_BorderBottomLeft
Definition render_layer.h:203
void RenderKillTileBorder(const ColorRGBA &Color)
Definition render_layer.cpp:487
void Init() override
Definition render_layer.cpp:616
T * GetData() const
Definition render_layer.cpp:997
bool DoRender(const CRenderLayerParams &Params) override
Definition render_layer.cpp:580
virtual void * GetRawData() const
Definition render_layer.cpp:938
void OnInit(IGraphics *pGraphics, ITextRender *pTextRender, CRenderMap *pRenderMap, std::shared_ptr< CEnvelopeManager > &pEnvelopeManager, IMap *pMap, IMapImages *pMapImages, std::optional< FCallbackLayerInit > &CallbackLayerInitOptional, bool TileAndQuadBuffering) override
Definition render_layer.cpp:943
void RenderTileLayer(const ColorRGBA &Color, const CRenderLayerParams &Params, CTileLayerVisuals *pTileLayerVisuals=nullptr)
Definition render_layer.cpp:306
virtual int GetDataIndex() const
Definition render_layer.cpp:927
virtual bool IsDesignLayer() const
Definition render_layer.h:141
IGraphics::CTextureHandle GetTexture() const override
Definition render_layer.h:140
IGraphics::CTextureHandle m_TextureHandle
Definition render_layer.h:145
void UploadTileData(std::optional< CTileLayerVisuals > &VisualsOptional, int CurOverlay, bool AddAsSpeedup, bool IsGameLayer=false)
Definition render_layer.cpp:632
ColorRGBA m_Color
Definition render_layer.h:229
CTile * m_pTiles
Definition render_layer.h:142
CRenderLayerTile(int GroupId, int LayerId, int Flags, CMapItemLayerTilemap *pLayerTilemap)
Definition render_layer.cpp:298
virtual void RenderTileLayerWithTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params)
Definition render_layer.cpp:596
virtual ColorRGBA GetRenderColor(const CRenderLayerParams &Params) const
Definition render_layer.cpp:546
bool IsValid() const override
Definition render_layer.cpp:932
void Render(const CRenderLayerParams &Params) override
Definition render_layer.cpp:558
virtual void InitTileData()
Definition render_layer.cpp:991
virtual void GetTileData(unsigned char *pIndex, unsigned char *pFlags, int *pAngleRotate, unsigned int x, unsigned int y, int CurOverlay) const
Definition render_layer.cpp:1002
CMapItemLayerTilemap * m_pLayerTilemap
Definition render_layer.h:228
~CRenderLayerTile() override=default
void RenderTileBorder(const ColorRGBA &Color, int BorderX0, int BorderY0, int BorderX1, int BorderY1, CTileLayerVisuals *pTileLayerVisuals)
Definition render_layer.cpp:386
virtual void RenderTileLayerNoTileBuffer(const ColorRGBA &Color, const CRenderLayerParams &Params)
Definition render_layer.cpp:601
std::optional< CRenderLayerTile::CTileLayerVisuals > m_VisualTiles
Definition render_layer.h:227
void Unload() override
Definition render_layer.cpp:913
bool m_TileAndQuadBuffering
Definition render_layer.h:88
virtual void Render(const CRenderLayerParams &Params)=0
bool IsVisibleInClipRegion(const std::optional< CClipRegion > &ClipRegion) const
Definition render_layer.cpp:200
std::optional< CClipRegion > m_LayerClip
Definition render_layer.h:93
virtual IGraphics::CTextureHandle GetTexture() const =0
virtual bool IsGroup() const
Definition render_layer.h:73
virtual void Unload()=0
virtual void OnInit(IGraphics *pGraphics, ITextRender *pTextRender, CRenderMap *pRenderMap, std::shared_ptr< CEnvelopeManager > &pEnvelopeManager, IMap *pMap, IMapImages *pMapImages, std::optional< FCallbackLayerInit > &CallbackLayerInitOptional, bool TileAndQuadBuffering)
Definition render_layer.cpp:182
int m_Flags
Definition render_layer.h:82
int m_LayerId
Definition render_layer.h:81
int GetGroup() const
Definition render_layer.h:77
class IMap * m_pMap
Definition render_layer.h:89
IMapImages * m_pMapImages
Definition render_layer.h:90
void UseTexture(IGraphics::CTextureHandle TextureHandle)
Definition render_layer.cpp:192
virtual bool IsValid() const
Definition render_layer.h:72
std::shared_ptr< CEnvelopeManager > m_pEnvelopeManager
Definition render_layer.h:91
CRenderLayer(int GroupId, int LayerId, int Flags)
Definition render_layer.cpp:179
int m_GroupId
Definition render_layer.h:80
virtual void Init()=0
virtual bool DoRender(const CRenderLayerParams &Params)=0
std::optional< FCallbackLayerInit > m_InitCallback
Definition render_layer.h:92
virtual void InitCallback() const
Definition render_layer.cpp:215
Definition render_map.h:73
Definition mapitems.h:662
Definition mapitems.h:672
Definition mapitems.h:655
Definition mapitems.h:351
Definition render_map.h:60
Definition mapitems.h:689
Definition color.h:183
constexpr ColorRGBA()=default
Definition graphics.h:261
Definition graphics.h:240
Definition render_interfaces.h:30
Definition map.h:20
Definition textrender.h:194
constexpr int BorderRenderDistance
Definition render_layer.h:32
unsigned int offset_ptr32
Definition render_layer.h:8
std::function< void(int GroupId, int LayerId)> FCallbackLayerInit
Definition render_layer.h:30
char * offset_ptr_size
Definition render_layer.h:6
uintptr_t offset_ptr
Definition render_layer.h:7
vector2_base< float > vec2
Definition vmath.h:168