blob: 6cf53e2d3f71ad9fd63e6a7e7f9dc4b2e9bd8381 (
plain)
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
|
#pragma once
#include "StarWorldRenderData.hpp"
#include "StarTilePainter.hpp"
#include "StarEnvironmentPainter.hpp"
#include "StarTextPainter.hpp"
#include "StarDrawablePainter.hpp"
#include "StarRenderer.hpp"
namespace Star {
STAR_CLASS(WorldPainter);
// Will update client rendering window internally
class WorldPainter {
public:
WorldPainter();
void renderInit(RendererPtr renderer);
void setCameraPosition(WorldGeometry const& worldGeometry, Vec2F const& position);
WorldCamera& camera();
void update(float dt);
void render(WorldRenderData& renderData, function<bool()> lightWaiter);
void adjustLighting(WorldRenderData& renderData);
private:
void renderParticles(WorldRenderData& renderData, Particle::Layer layer);
void renderBars(WorldRenderData& renderData);
void drawEntityLayer(List<Drawable> drawables, EntityHighlightEffect highlightEffect = EntityHighlightEffect());
void drawDrawable(Drawable drawable);
void drawDrawableSet(List<Drawable>& drawable);
WorldCamera m_camera;
RendererPtr m_renderer;
TextPainterPtr m_textPainter;
DrawablePainterPtr m_drawablePainter;
EnvironmentPainterPtr m_environmentPainter;
TilePainterPtr m_tilePainter;
Json m_highlightConfig;
Map<EntityHighlightEffectType, pair<Directives, Directives>> m_highlightDirectives;
Vec2F m_entityBarOffset;
Vec2F m_entityBarSpacing;
Vec2F m_entityBarSize;
Vec2F m_entityBarIconOffset;
// Updated every frame
AssetsConstPtr m_assets;
RectF m_worldScreenRect;
Vec2F m_previousCameraCenter;
Vec2F m_parallaxWorldPosition;
float m_preloadTextureChance;
};
}
|