Provide a renderer callback when the overlay data changes

This commit is contained in:
Cameron Gutman
2019-02-12 18:43:38 -08:00
parent 947970e07b
commit 6ed512e762
7 changed files with 80 additions and 26 deletions

View File

@@ -1,25 +1,50 @@
#include "overlaymanager.h"
OverlayManager::OverlayManager()
using namespace Overlay;
OverlayManager::OverlayManager() :
m_Renderer(nullptr)
{
memset(m_Overlays, 0, sizeof(m_Overlays));
}
bool OverlayManager::isOverlayEnabled(OverlayManager::OverlayType type)
bool OverlayManager::isOverlayEnabled(OverlayType type)
{
return m_Overlays[type].enabled;
}
char* OverlayManager::getOverlayText(OverlayType type)
{
return m_Overlays[type].text;
}
void OverlayManager::setOverlayState(OverlayManager::OverlayType type, bool enabled)
void OverlayManager::setOverlayTextUpdated(OverlayType type)
{
m_Overlays[type].enabled = enabled;
if (!enabled) {
// Set the text to empty string on disable
m_Overlays[type].text[0] = 0;
// Only update the overlay state if it's enabled. If it's not enabled,
// the renderer has already been notified by setOverlayState().
if (m_Overlays[type].enabled && m_Renderer != nullptr) {
m_Renderer->notifyOverlayUpdated(type);
}
}
void OverlayManager::setOverlayState(OverlayType type, bool enabled)
{
bool stateChanged = m_Overlays[type].enabled != enabled;
m_Overlays[type].enabled = enabled;
if (stateChanged) {
if (!enabled) {
// Set the text to empty string on disable
m_Overlays[type].text[0] = 0;
}
if (m_Renderer != nullptr) {
m_Renderer->notifyOverlayUpdated(type);
}
}
}
void OverlayManager::setOverlayRenderer(IOverlayRenderer* renderer)
{
m_Renderer = renderer;
}