Pioneer
Loading...
Searching...
No Matches
NavLights.h
Go to the documentation of this file.
1// Copyright © 2008-2023 Pioneer Developers. See AUTHORS.txt for details
2// Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3
4#ifndef _NAVLIGHTS_H
5#define _NAVLIGHTS_H
6/*
7 * Blinking navigation lights for ships and stations
8 */
9#include "JsonFwd.h"
12
13namespace Graphics {
14 class Renderer;
15} // namespace Graphics
16namespace SceneGraph {
17 class Model;
18 class Billboard;
19} // namespace SceneGraph
20
21class NavLights {
22public:
28 NAVLIGHT_OFF = 15
29 };
30
31 struct LightBulb {
32 LightBulb(Uint8 group, Uint8 mask, Uint8 color, SceneGraph::Billboard *bb);
33 Uint8 group;
34 Uint8 mask; //bitmask: 00001111 light on half the period, 11111111 light on the entire period etc...
35 Uint8 color;
37 };
38
39 NavLights(SceneGraph::Model *, float period = 2.f);
40 virtual ~NavLights();
41 virtual void SaveToJson(Json &jsonObj);
42 virtual void LoadFromJson(const Json &jsonObj);
43
44 void SetEnabled(bool on) { m_enabled = on; }
45 void Update(float time);
46 void Render(Graphics::Renderer *renderer);
47 void SetColor(unsigned int group, LightColor);
48 void SetMask(unsigned int group, uint8_t mask);
49
50 static void Init(Graphics::Renderer *);
51 static void Uninit();
52
53protected:
54 std::map<Uint32, std::vector<LightBulb>> m_groupLights;
55 float m_time;
56 float m_period;
58
60};
61
62#endif
nlohmann::json Json
Definition Json.h:8
Definition Renderer.h:44
Definition VertexArray.h:19
Definition NavLights.h:21
void Render(Graphics::Renderer *renderer)
Definition NavLights.cpp:200
static void Uninit()
Definition NavLights.cpp:87
void SetEnabled(bool on)
Definition NavLights.h:44
float m_time
Definition NavLights.h:55
virtual void LoadFromJson(const Json &jsonObj)
Definition NavLights.cpp:163
void Update(float time)
Definition NavLights.cpp:175
void SetColor(unsigned int group, LightColor)
Definition NavLights.cpp:211
float m_period
Definition NavLights.h:56
bool m_enabled
Definition NavLights.h:57
LightColor
Definition NavLights.h:23
@ NAVLIGHT_RED
Definition NavLights.h:24
@ NAVLIGHT_GREEN
Definition NavLights.h:25
@ NAVLIGHT_OFF
Definition NavLights.h:28
@ NAVLIGHT_YELLOW
Definition NavLights.h:27
@ NAVLIGHT_BLUE
Definition NavLights.h:26
Graphics::VertexArray m_billboardTris
Definition NavLights.h:59
std::map< Uint32, std::vector< LightBulb > > m_groupLights
Definition NavLights.h:54
void SetMask(unsigned int group, uint8_t mask)
Definition NavLights.cpp:223
virtual void SaveToJson(Json &jsonObj)
Definition NavLights.cpp:153
static void Init(Graphics::Renderer *)
Definition NavLights.cpp:49
virtual ~NavLights()
Definition NavLights.cpp:149
Definition Billboard.h:18
Definition Model.h:88
Definition Background.h:14
Definition CityOnPlanet.h:31
Definition NavLights.h:31
Uint8 mask
Definition NavLights.h:34
SceneGraph::Billboard * billboard
Definition NavLights.h:36
Uint8 color
Definition NavLights.h:35
Uint8 group
Definition NavLights.h:33