2023-06-20 04:33:09 +00:00
|
|
|
#ifndef STAR_WORLD_PAINTER_HPP
|
|
|
|
#define STAR_WORLD_PAINTER_HPP
|
|
|
|
|
|
|
|
#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);
|
|
|
|
|
2023-06-28 21:05:01 +00:00
|
|
|
WorldCamera& camera();
|
2023-06-20 04:33:09 +00:00
|
|
|
|
2023-06-29 00:11:19 +00:00
|
|
|
void render(WorldRenderData& renderData, function<void()> lightWaiter);
|
|
|
|
void adjustLighting(WorldRenderData& renderData);
|
2023-06-20 04:33:09 +00:00
|
|
|
|
|
|
|
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;
|
2023-06-25 06:10:57 +00:00
|
|
|
Map<EntityHighlightEffectType, pair<Directives, Directives>> m_highlightDirectives;
|
2023-06-20 04:33:09 +00:00
|
|
|
|
|
|
|
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;
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|