Pioneer
Loading...
Searching...
No Matches
Shields.h
Go to the documentation of this file.
1// Copyright © 2008-2024 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 "Color.h"
11#include "JsonFwd.h"
12#include "RefCounted.h"
13#include "matrix4x4.h"
14#include "vector3.h"
15
16#include <deque>
17
18namespace Graphics {
19 class Renderer;
20 class Material;
21}
22namespace SceneGraph {
23 class Model;
24 class StaticGeometry;
25} // namespace SceneGraph
26
27class Shields {
28public:
29 struct Shield {
30 Shield(const Color3ub &color, const matrix4x4f &matrix, SceneGraph::StaticGeometry *sg);
31 Color3ub m_colour; // I'm English, so it's "colour" ;)
34 };
35
37 virtual ~Shields();
38 virtual void SaveToJson(Json &jsonObj);
39 virtual void LoadFromJson(const Json &jsonObj);
40
41 void SetEnabled(const bool on) { m_enabled = on; }
42 void Update(const float coolDown, const float shieldStrength);
43 void SetColor(const Color3ub &);
44 void AddHit(const vector3d &hitPos);
45
46 static void Init(Graphics::Renderer *);
48 static void Uninit();
49
51
52protected:
53 struct Hits {
54 Hits(const vector3d &_pos, const Uint32 _start, const Uint32 _end);
56 Uint32 start;
57 Uint32 end;
58 };
59
60 std::deque<Hits> m_hits;
61 std::vector<Shield> m_shields;
63
65
66 static bool s_initialised;
67};
68
69#endif
nlohmann::json Json
Definition: Json.h:8
Definition: Renderer.h:45
Definition: RefCounted.h:36
Definition: Model.h:87
Definition: StaticGeometry.h:18
Definition: Shields.h:27
void Update(const float coolDown, const float shieldStrength)
Definition: Shields.cpp:275
void AddHit(const vector3d &hitPos)
Definition: Shields.cpp:337
virtual void SaveToJson(Json &jsonObj)
Definition: Shields.cpp:232
std::vector< Shield > m_shields
Definition: Shields.h:61
static bool s_initialised
Definition: Shields.h:66
void SetEnabled(const bool on)
Definition: Shields.h:41
std::deque< Hits > m_hits
Definition: Shields.h:60
static void Uninit()
Definition: Shields.cpp:180
virtual ~Shields()
Definition: Shields.cpp:228
bool m_enabled
Definition: Shields.h:64
RefCountedPtr< Graphics::Material > m_shieldMaterial
Definition: Shields.h:62
SceneGraph::StaticGeometry * GetFirstShieldMesh()
Definition: Shields.cpp:344
virtual void LoadFromJson(const Json &jsonObj)
Definition: Shields.cpp:251
static void Init(Graphics::Renderer *)
Definition: Shields.cpp:90
void SetColor(const Color3ub &)
Definition: Shields.cpp:330
static void ReparentShieldNodes(SceneGraph::Model *)
Definition: Shields.cpp:119
Definition: Background.h:14
Definition: CityOnPlanet.h:32
Definition: Color.h:167
Definition: Shields.h:53
Uint32 start
Definition: Shields.h:56
Uint32 end
Definition: Shields.h:57
vector3d pos
Definition: Shields.h:55
Definition: Shields.h:29
RefCountedPtr< SceneGraph::StaticGeometry > m_mesh
Definition: Shields.h:33
Color3ub m_colour
Definition: Shields.h:31
matrix4x4f m_matrix
Definition: Shields.h:32