Pioneer
Shields.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 _SHIELDS_H_
5 #define _SHIELDS_H_
6 
7 /*
8  * Mesh shields for ships and other objects.
9  */
10 #include "JsonFwd.h"
11 #include "libs.h"
12 #include <deque>
13 
14 namespace Graphics {
15  class Renderer;
16  class Material;
17 }
18 namespace SceneGraph {
19  class Model;
20  class StaticGeometry;
21 } // namespace SceneGraph
22 
23 class Shields {
24 public:
25  struct Shield {
26  Shield(const Color3ub &color, const matrix4x4f &matrix, SceneGraph::StaticGeometry *sg);
27  Color3ub m_colour; // I'm English, so it's "colour" ;)
30  };
31 
33  virtual ~Shields();
34  virtual void SaveToJson(Json &jsonObj);
35  virtual void LoadFromJson(const Json &jsonObj);
36 
37  void SetEnabled(const bool on) { m_enabled = on; }
38  void Update(const float coolDown, const float shieldStrength);
39  void SetColor(const Color3ub &);
40  void AddHit(const vector3d &hitPos);
41 
42  static void Init(Graphics::Renderer *);
44  static void Uninit();
45 
47 
48 protected:
49  struct Hits {
50  Hits(const vector3d &_pos, const Uint32 _start, const Uint32 _end);
52  Uint32 start;
53  Uint32 end;
54  };
55 
56  std::deque<Hits> m_hits;
57  std::vector<Shield> m_shields;
59 
60  bool m_enabled;
61 
62  static bool s_initialised;
63 };
64 
65 #endif
nlohmann::json Json
Definition: Json.h:8
Definition: Renderer.h:44
Definition: Model.h:88
Definition: StaticGeometry.h:19
Definition: Shields.h:23
void Update(const float coolDown, const float shieldStrength)
Definition: Shields.cpp:274
void AddHit(const vector3d &hitPos)
Definition: Shields.cpp:335
virtual void SaveToJson(Json &jsonObj)
Definition: Shields.cpp:231
std::vector< Shield > m_shields
Definition: Shields.h:57
Shields(SceneGraph::Model *)
Definition: Shields.cpp:188
static bool s_initialised
Definition: Shields.h:62
void SetEnabled(const bool on)
Definition: Shields.h:37
std::deque< Hits > m_hits
Definition: Shields.h:56
static void Uninit()
Definition: Shields.cpp:179
virtual ~Shields()
Definition: Shields.cpp:227
bool m_enabled
Definition: Shields.h:60
RefCountedPtr< Graphics::Material > m_shieldMaterial
Definition: Shields.h:58
SceneGraph::StaticGeometry * GetFirstShieldMesh()
Definition: Shields.cpp:341
virtual void LoadFromJson(const Json &jsonObj)
Definition: Shields.cpp:250
static void Init(Graphics::Renderer *)
Definition: Shields.cpp:89
void SetColor(const Color3ub &)
Definition: Shields.cpp:328
static void ReparentShieldNodes(SceneGraph::Model *)
Definition: Shields.cpp:118
Definition: Background.h:14
Definition: CityOnPlanet.h:31
Definition: Color.h:167
Definition: Shields.h:49
Uint32 start
Definition: Shields.h:52
Uint32 end
Definition: Shields.h:53
Hits(const vector3d &_pos, const Uint32 _start, const Uint32 _end)
Definition: Shields.cpp:83
vector3d pos
Definition: Shields.h:51
Definition: Shields.h:25
RefCountedPtr< SceneGraph::StaticGeometry > m_mesh
Definition: Shields.h:29
Color3ub m_colour
Definition: Shields.h:27
matrix4x4f m_matrix
Definition: Shields.h:28
Shield(const Color3ub &color, const matrix4x4f &matrix, SceneGraph::StaticGeometry *sg)
Definition: Shields.cpp:77