osb/source/frontend/StarNameplatePainter.hpp

57 lines
1.2 KiB
C++
Raw Normal View History

2023-06-20 04:33:09 +00:00
#ifndef STAR_NAMEPLATE_PAINTER_HPP
#define STAR_NAMEPLATE_PAINTER_HPP
#include "StarWorldClient.hpp"
#include "StarWorldCamera.hpp"
#include "StarChatBubbleSeparation.hpp"
#include "StarTextPainter.hpp"
namespace Star {
STAR_CLASS(WorldClient);
STAR_CLASS(NameplatePainter);
class NameplatePainter {
public:
NameplatePainter();
void update(float dt, WorldClientPtr const& world, WorldCamera const& camera, bool inspectionMode);
2023-06-20 04:33:09 +00:00
void render();
private:
struct Nametag {
String name;
Maybe<String> statusText;
Vec3B color;
float opacity;
EntityId entityId;
};
TextPositioning namePosition(Vec2F bubblePosition) const;
TextPositioning statusPosition(Vec2F bubblePosition) const;
RectF determineBoundBox(Vec2F bubblePosition, Nametag const& nametag) const;
2023-06-23 10:24:40 +00:00
bool m_showMasterNames;
2023-06-20 04:33:09 +00:00
float m_opacityRate;
2023-06-23 10:24:40 +00:00
float m_inspectOpacityRate;
2023-06-20 04:33:09 +00:00
Vec2F m_offset;
2023-06-21 12:29:40 +00:00
String m_font;
String m_statusFont;
2023-06-23 10:24:40 +00:00
String m_fontDirectives;
String m_statusFontDirectives;
2023-06-20 04:33:09 +00:00
float m_fontSize;
float m_statusFontSize;
Vec2F m_statusOffset;
Color m_statusColor;
float m_opacityBoost;
WorldCamera m_camera;
Set<EntityId> m_entitiesWithNametags;
BubbleSeparator<Nametag> m_nametags;
};
}
#endif