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
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef _LEGACY_MESH_DRAWER_H_
#define _LEGACY_MESH_DRAWER_H_
#include "Map/SMF/IMeshDrawer.h"
#include "System/float3.h"
class CVertexArray;
class CCamera;
class CSMFReadMap;
class CSMFGroundDrawer;
/**
* Map drawer implementation
*/
class CLegacyMeshDrawer : public IMeshDrawer
{
public:
CLegacyMeshDrawer(CSMFReadMap* rm, CSMFGroundDrawer* gd);
void Update() override {}
void DrawMesh(const DrawPass::e& drawPass) override;
void DrawBorderMesh(const DrawPass::e& drawPass) override {}
void DrawShadowMesh();
private:
void UpdateLODParams(const DrawPass::e& drawPass);
void FindRange(const CCamera* cam, int& xs, int& xe, int y, int lod);
inline bool BigTexSquareRowVisible(const CCamera* cam, int) const;
inline void DrawVertexAQ(CVertexArray* ma, int x, int y);
inline void DrawVertexAQ(CVertexArray* ma, int x, int y, float height);
inline void DrawGroundVertexArrayQ(CVertexArray*& ma);
void DoDrawGroundRow(const CCamera* cam, int bty);
void DoDrawGroundShadowLOD(int nlod);
private:
CSMFReadMap* smfReadMap;
CSMFGroundDrawer* smfGroundDrawer;
int viewRadius = 4;
int neededLod = 4;
};
#endif // _LEGACY_MESH_DRAWER_H_
|