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 67 68 69 70
|
#pragma once
#include "RenderableTextBase.h"
namespace render
{
/**
*Simple RenderableText implementation that holds the text, colour and position
* information as private fields.
*/
class StaticRenderableText :
public RenderableTextBase
{
private:
std::string _text;
Vector3 _worldPosition;
Vector4 _colour;
bool _visible;
public:
StaticRenderableText(const std::string& text, const Vector3& worldPosition, const Vector4& colour) :
_text(text),
_worldPosition(worldPosition),
_colour(colour),
_visible(true)
{}
// When hidden, this class will return an empty string in getText(),
// causing this instance to be skipped by the ITextRenderer
void setVisible(bool isVisible)
{
_visible = isVisible;
}
const Vector3& getWorldPosition() override
{
return _worldPosition;
}
void setWorldPosition(const Vector3& position)
{
_worldPosition = position;
}
const std::string& getText() override
{
// Return an empty text if this renderable is invisible
static std::string EmptyText;
return _visible ? _text : EmptyText;
}
void setText(const std::string& text)
{
_text = text;
}
const Vector4& getColour() override
{
return _colour;
}
void setColour(const Vector4& colour)
{
_colour = colour;
}
};
}
|